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

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

  1. 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
    2. 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
  2. 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.
    1. 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().
      1. 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().
        1. 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...

          1. qd je lance ma commande sur un terminal le résultat apparait sur le terminal. IL s'agit donc bien de la sortie standard ?
            1. 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.
              1. 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?
                1. Ben oui, dans ce cas...
                  Honnêtement, je ne vois pas quoi te proposer d'autre ...

                  1. merci qd mem grofwa
                    je continue de chercher mais un peu d'aide serait la bienvenue :)
                    1. 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 ?