[php] utilisation de "exec" (help!!)

Fermé
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 - 25 juil. 2005 à 14:08
 Utilisateur anonyme - 8 févr. 2007 à 09:51
Bonjour,

j'utilise une syntaxe du type exec(commande) avec commande étant une chaîne de caractères.

qd je fais echo(commande) il s'agit bien de la commande souhaitée
Cette commande est sensée renvoyer sur l'entrée standard "OK\n" ou "ERR\n". Donc la fonction exec prendre pr valeur "OK\n" ou "ERR\n" or elle ne prend pa de valeur :( ->
echo(exec(commande)) n'affiche rien.

J'ai testé la commande seule sur un terminal en faisant un copier coller de ce qui était affiché avec echo(commande) elle marche correctement. Je ne sais vraiment plus quoi faire..

amis du php je suis a votre écoute ;)

12 réponses

grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
25 juil. 2005 à 15:11
Salut,

Tu as essayé d'utiliser un deuxième paramètre (output) qui renvoie un array contenant la liste des lignes affichées sur la sortie standard ?

m.
1
Tu as essayé d'utiliser un deuxième paramètre (output) qui renvoie un array contenant la liste des lignes affichées sur la sortie standard ?

m.



tappppppppppp
0
Utilisateur anonyme
8 févr. 2007 à 09:51
Tu as essayé d'utiliser un deuxième paramètre (output) qui renvoie un array contenant la liste des lignes affichées sur la sortie standard ?

m.



tappppppppppp
0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 15:32
oui j'ai mis un tableau output pr stocker si le retour ne prenait pa plusieurs lignes mais il n'y a rien ds mon tableau :`(

j'ai fait tous les tests possibles et imaginables je suis arrivé aux limites de mon imagination.

j'ai testé exec avec une commande plus classique pr vérifier que je l'utilisais correctement exec("ping adressIP",$output) ça fonctionne très bien.
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
25 juil. 2005 à 15:35
T'es sûr que l'output ne se fait pas sur la sortie d'erreur ?
0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 15:51
non il ne me semble pa que ce soit sur la sortie d'erreur amoins que j'ai mal interprété les lignes suivantes j'avais compris que cela se faisait sur la sortie standard


cf php.net


output
Si l'argument output est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 15:53
non il ne me semble pa que ce soit sur la sortie d'erreur amoins que j'ai mal interprété les lignes suivantes j'avais compris que cela se faisait sur la sortie standard


cf php.net


output
Si l'argument output est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
25 juil. 2005 à 15:54
Ce que je voulais dire, c'est que si ça tombe, ta commande envoie la sortie sur la sortie d'erreur. La fonction exec ne récupère apparemment que la sortie standard...

0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 15:55
qd je lance ma commande sur un terminal le résultat apparait sur le terminal. IL s'agit donc bien de la sortie standard ?
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
25 juil. 2005 à 15:57
pas forcément, par défaut, les deux sorties sont dirigées vers l'écran.

pour tester :
ma_commande >std.txt 2>err.txt

si tu as du texte dans err.txt, c'est que ça sort sur la sortie d'erreur.

m.
0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 16:01
j'ai pa de text ds err.txt par contre j'ai du text dans std.txt. Je suppose qu'il s'agit donc bien de la sortie standard?
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
25 juil. 2005 à 16:03
Ben oui, dans ce cas...
Honnêtement, je ne vois pas quoi te proposer d'autre ...

0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
25 juil. 2005 à 16:32
merci qd mem grofwa
je continue de chercher mais un peu d'aide serait la bienvenue :)
0
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 22
26 juil. 2005 à 09:23
le programme en question est programmé en C et est sous la forme void main (argc argv[]){
blablabla}

et qd je demande de retourner avec exec l'entier retourné par l'éxécutable associé a ce fichier .c pr vérifier qu'il n'y a pa d'erreur -> il me retourne 255
:(

pensez vous que cela puisse perturber exec qui refuserait alors de se lancer ?
0