J'ai créé une question sur serverfault.com, et il a été recommandé de demander ici.Pourquoi le script PHP ne peut-il pas écrire un fichier sur le serveur 2008 via une ligne de commande ou un planificateur de tâches?
J'ai un script PHP. Il fonctionne bien quand j'utilise un navigateur. Il écrit un fichier XML dans le même répertoire. Le script prend ~ 60 secondes pour s'exécuter et le fichier XML résultant est ~ 16 Mo. Je cours PHP 5.2.13 via FastCGI sur Windows Server Web édition SP1 64 bits.
Le code extrait l'inventaire du serveur SQL, exécute une boucle pour créer un fichier XML pour un tiers.
J'ai créé une tâche dans le planificateur de tâches à exécuter c: \ php5 \ php.exe "D: \ inetpub \ tools \ build.php"
Le planificateur de tâches montre un laps de temps d'environ une minute, ce qui est combien de temps le script prend pour fonctionner dans un navigateur.
Aucune erreur renvoyée, mais aucun fichier créé.
Chaque fois que je modifie les propriétés d'une tâche planifiée, une boîte de mot de passe utilisateur s'affiche et j'entre le mot de passe du compte administrateur.
Si j'exécute ce même chemin et argument sur une ligne de commande, il ne génère pas d'erreur et ne crée pas le fichier.
Lorsque je clique avec le bouton droit sur l'invite de commande en tant qu'administrateur, le fichier n'est toujours pas créé. Je reçois ma déclaration d'écho "fichier publié" qui est après la création du fichier et aucune erreur n'est renvoyée.
Je fais un fopen fwrite simple fclose pour enregistrer le contenu d'une variable php dans un fichier .xml, et le fichier n'est créé que lorsque le script est exécuté dans le navigateur.
Voici ce qui se passe après la boucle de construction xml:
$feedContent .= "</feed>";
sqlsrv_close($conn);
echo "<p>feed built</p>";
$feedFile = "feed.xml";
$handler = fopen($feedFile, 'w');
fwrite($handler, $feedContent);
fclose($handler);
echo "<p>file published</p>";
Merci
Vous avez raison. Je viens de chercher des aliments.xml et trouvé un dans c: \ users \ administrator J'ai fait l'hypothèse que le script s'exécuterait dans son propre répertoire, peu importe comment j'ai lancé son exécution. Merci pour votre aide – rg89