php exec... et oui encore lui

php exec... et oui encore lui - PHP - Programmation

Marsh Posté le 14-01-2008 à 00:29:53    

Bonjour a tous,
 
J'ai un petit programme en C++ qui doit générer  un String et le balance sur la sortie standard cout.
Ce programme marche bien dans le terminal (sous osx) et affiche bien sur la sortie standard (pas stderr).
Apparement pas de souci
 
Depuis un script php je voudrais récuperer ce string dans une variable.
J'utilise donc exec($command,$output,$retval) mais j'ai rien dans mon output et retval n'a pas une bonne valeur.
 
les droits d'execution du prog c++ ont l'air ok (x pour chaque user).
 
pas de problèmes si j'essaie avec une autre command comme ls -l, mais bizarrement ca ne marche pas avec toutes les commandes avec svn par example je ne récupère pas le texte qui sort sur le terminal.
 
Ca fait des heures que j'essaie tout et n'importe quoi pour comprendre ce qui se passe ...  :pt1cable:  
J'ai tout essayé shell_exec,system,passthru... mais le résultat et le même
 
quelqu'un aurait une piste ??
 
Merci d'avance
 
Pit


Message édité par pitfaw le 14-01-2008 à 00:38:50
Reply

Marsh Posté le 14-01-2008 à 00:29:53   

Reply

Marsh Posté le 14-01-2008 à 18:41:37    

2>&1 : redirection du flux d'erreur sur la sortie standard, c'est mieux pour comprendre "pourquoi"
 
exec("macommande 2>&1",$output,$retval);
print_r($output);
 
Si tu as une erreur avant l'exécution de ton programme, bash te la renvoie sur stderr.

Message cité 1 fois
Message édité par czh le 14-01-2008 à 18:42:56
Reply

Marsh Posté le 15-01-2008 à 16:30:27    

czh a écrit :

2>&1 : redirection du flux d'erreur sur la sortie standard, c'est mieux pour comprendre "pourquoi"
 
exec("macommande 2>&1",$output,$retval);
print_r($output);
 
Si tu as une erreur avant l'exécution de ton programme, bash te la renvoie sur stderr.


 
 
Le truc c'est que je ne me connecte pas a ce serveur depuis un browser mais depuis un soft qui se connecte a ce serveur pour récuperer des données (protection,update...)
Donc le truc genre print_r, je ne sait pas comment le récuperer... ca va renvoyer la sortie a mon soft?

Reply

Marsh Posté le 16-01-2008 à 14:40:45    

pitfaw a écrit :


 
 
Le truc c'est que je ne me connecte pas a ce serveur depuis un browser mais depuis un soft qui se connecte a ce serveur pour récuperer des données (protection,update...)
Donc le truc genre print_r, je ne sait pas comment le récuperer... ca va renvoyer la sortie a mon soft?


 
ah ok, depuis un browser la commande me montre effectivement un message d'erreur du a mon prog:
 
Array ( [0] => dyld: Symbol not found: __cg_jpeg_resync_to_restart [1] => Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO [2] => Expected in: /Applications/MAMP/Library/lib/libJPEG.dylib [3] => )
 
vu que le prog s'execute bien depuis le terminal, quelle différence peut-t-il y avoir depuis php (le safe mode est off)?
 
Merci
 

Reply

Marsh Posté le 01-02-2009 à 16:03:18    

pitfaw a écrit :


 
ah ok, depuis un browser la commande me montre effectivement un message d'erreur du a mon prog:
 
Array ( [0] => dyld: Symbol not found: __cg_jpeg_resync_to_restart [1] => Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO [2] => Expected in: /Applications/MAMP/Library/lib/libJPEG.dylib [3] => )
 
vu que le prog s'execute bien depuis le terminal, quelle différence peut-t-il y avoir depuis php (le safe mode est off)?
 
Merci
 


 
 
Je te conseille de faire preceder la commande dans ton exec d'un "unset DYLD_LIBRARY_PATH;"
Cela m'a permis de faire un script php qui appele gnuplot sans enlever DYLD_LIBRARY_PATH  j'avais le message :
 dyld: Symbol not found: __cg_jpeg_CreateCompress
  Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /Applications/MAMP/Library/lib/libJPEG.dylib
 

Reply

Sujets relatifs:

Leave a Replay

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