debug de la fonction exec [Résolu][PHP] - PHP - Programmation
Marsh Posté le 29-05-2009 à 11:17:21
Bonjour,
En plus de la ligne de commande, la fonction exec prend 2 paramètres optionnels. Le premier est un tableau qui contiendra les lignes renvoyées pas la console et le second est un entier qui contient le code retour de la commande.
Passe ces deux paramètres. Tu aura peut-être plus d'informations sur ton erreur.
Marsh Posté le 29-05-2009 à 11:29:13
hello
le tableau renvoyé est vide. le code de retour vaut 1
des idées ?
Marsh Posté le 01-06-2009 à 12:31:36
je n'utilise pas eval, mais exec (ou ses variantes : system, passthru, etc)
pour exécuter des commandes sur le serveur, je vois pas autre chose ;-)
Marsh Posté le 01-06-2009 à 14:31:14
ah désolé, j'ai lu trop vite
Le problème est que comme tu rediriges la sortie, le script n'attends pas la fin du programme (listage dir) et donc tu ne pourras peut-être pas tester efficacement la réussite de la commande.
Marsh Posté le 01-06-2009 à 15:24:43
peut être un problème de permissions en écriture...
essaies la même commande SANS la redirection vers le fichier out. Tu auras normalement un code retour = 1 et le tableau ne sera plus vide.
Marsh Posté le 02-06-2009 à 04:39:29
c'est effectivement un problème de droits. en élevant le application pool de IIS de "Network Service" à "Local System" ca passe mieux.
Bon. évidemment c'est pas top au niveau sécurité, mais maintenant, il reste à créer un compte restreint et lui donner les droits adéquats...
Reste que les commandes ne donnaient pas la moindre piste sur l'erreur. Même sans rediriger la sortie, je n'obtenais aucune indication...
Merci pour votre aide en tout cas.
Marsh Posté le 29-05-2009 à 10:52:45
hello
j'ai un soucis avec la fonction php exec (ou system, ou passthru).
ma conf : php 5.2 sur IIS6. Safe mode=Off
le code ci-dessous :
ne produit aucun résultat, aucun fichier n'est créé où que ce soit sur le disque.
le code ci-dessous :
execute l'opération die, et affiche "erreur", mais je ne sais pas comment obtenir plus d'informations.
j'ai essayé un
ca n'affiche rien, et ca ne semble pas aller dans le catch...
est ce qu'il existe un équivalent à mysql_error pour la fonction exec, pour que je sache ce qui ne va pas ?
merci
edit : j'ai activé l'affichage des erreurs dans php.ini, et le log dans un fichier externe. rien dans ce fichier non plus, qui se remplit par ailleurs pour d'autres erreurs (pas liées)
edit2 : le lancement en ligne de commande directement sur le serveur fonctionne : le fichier out.txt est créé. pourtant, si je spécifie une clause or die(), il l'exécute (et créé aussi le fichier...)
Message édité par nabbo le 02-06-2009 à 04:39:51