[Résolu][PHP] debug de la fonction exec

debug de la fonction exec [Résolu][PHP] - PHP - Programmation

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 :  

Code :
  1. $result = exec("dir > out.txt" );


ne produit aucun résultat, aucun fichier n'est créé où que ce soit sur le disque.
 
le code ci-dessous :  

Code :
  1. $result = exec("dir > out.txt" ) or die("erreur" );


execute l'opération die, et affiche "erreur", mais je ne sais pas comment obtenir plus d'informations.
 
j'ai essayé un  

Code :
  1. try {
  2.    $result = exec("dir > out.txt" );
  3. } catch (Exception $e) {
  4.     echo 'Caught exception: ',  $e->getMessage(), "\n";
  5. }


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
 
:jap:
 
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
Reply

Marsh Posté le 29-05-2009 à 10:52:45   

Reply

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.


Message édité par _v1ru5_ le 29-05-2009 à 11:17:34

---------------
« L'esprit ressemble à de l'eau : quand il est agité, il devient difficile à percevoir. Mais si on le laisse s'apaiser, alors la réponse devient claire. » Albert Einstein
Reply

Marsh Posté le 29-05-2009 à 11:29:13    

hello
 
le tableau renvoyé est vide. le code de retour vaut 1
 
des idées ?

Reply

Marsh Posté le 01-06-2009 à 11:58:43    

ne pas utiliser eval ?

Reply

Marsh Posté le 01-06-2009 à 12:31:36    

:hello:
 
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 ;-)

Reply

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.

Reply

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.
 

Reply

Marsh Posté le 02-06-2009 à 04:39:29    

:hello:
 
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.
 
:jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed