IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Retour d'un shell_exec


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Par défaut [Système] Retour d'un shell_exec
    Bonjour,

    j'ai un problème compliqué.

    Depuis PHP, je fais appel à un programme quelconque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output = shell_exec("C:\\progra~1\\fme\\fme.exe");
    Et je dois tester la sortie ($output) pour déterminer si le programme a fait son micmac avec succes ou non.
    Quand je lance la commande a la mano dans le DOS, voici ce que j'ai :


    Feature Manipulation Engine 2006 GB (O) (20060421 - Build 2621)
    Edition (node locked-crc)
    Warning: The software you are using is for demo purposes only.
    This is not freeware and cannot be used to process any data for any purposes oth
    er than evaluation and demonstration.
    To purchase, contact sales@safe.com or call 604-501-9985
    Evaluation License: 15 days left.
    Machine host name is: VS2k
    Copyright (c) 1994 - 2006
    Safe Software Inc.


    File valeur could not be opened
    Program Terminating

    Translation FAILED.
    Je dois donc faire mon test sur le $output de sorte que "puisque la sortie comprend le mot FAILED alors le calcul a échoué et je fais un print 'échec de l'opération blablabla'". Mais le output de PHP ne me renvoie pas les 3 dernières lignes. Il me renvoie seulement :

    Feature Manipulation Engine 2006 GB (O) (20060421 - Build 2621)
    Edition (node locked-crc)
    Warning: The software you are using is for demo purposes only.
    This is not freeware and cannot be used to process any data for any purposes oth
    er than evaluation and demonstration.
    To purchase, contact sales@safe.com or call 604-501-9985
    Evaluation License: 15 days left.
    Machine host name is: VS2k
    Copyright (c) 1994 - 2006
    Safe Software Inc.
    Je ne peux donc pas tester si le mic-mac a réussi ou pas.
    De même, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output = shell_exec("C:\\progra~1\\fme\\fme.exe > d:\test.txt");
    ou bien si j'exececute a la mano la commande, le fichier de sortie (dans d:\test.txt) ne comprend pas les dernières lignes : les veritables lignes de retour.


    Est-ce que vous auriez une idée de la solution ? Y aurait-il plusieurs retour (plusieurs stream) ? (on me dit qu'un cas similaire a été traité par un getErrorStream() en Java).

  2. #2
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Autant que je sache, tu peux pas recupérer la valuer de retour de ton programme (j'ai jamais essayé, mais c'est pas la 1er fois que je vois des gens se plaindre qu'ils n'y arrivent pas). A toi donc de vérifier, mais si ce que je dit est vrai, alors j'ai bien une alternative pour toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tmp_f = md5(microtime());
    shell_exec('C:\\progra~1\\fme\\fme.exe > c:\\www\\tmp_log\\'.$tmp_f);
    fopen('c:\\www\\tmp_log\\'.$tmp_f, "r");
    fget etc...
    unlink('c:\\www\\tmp_log\\'.$tmp_f)

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    t"as essayé avevc le 3e param de exec() ?
    Si l'exe est bien fait il devrait te retourner un code d'erreur/statut (0, -1, ...).
    Bye

  4. #4
    Membre éclairé Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Par défaut
    Merci pour vos suggestions, j'essayerai tout à l'heure au bureau (puisqu'on est déjà demain).

  5. #5
    Membre éclairé Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Par défaut
    Le programme est bien foutu, le main retourne une valeur, le 3ème paramètre de la fonction exec() fait l'affaire.

    Résolé, thanks.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Retour de la fonction exec()
    Par MB_MathemaTeX dans le forum Langage
    Réponses: 5
    Dernier message: 26/08/2007, 17h36
  2. [Système] Retour des fonctions
    Par hair_peace dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2007, 22h31
  3. Réponses: 4
    Dernier message: 25/04/2007, 12h34
  4. [Système] retour de résultats par une fonction
    Par maximenet dans le forum Langage
    Réponses: 7
    Dernier message: 18/09/2006, 21h32
  5. Réponses: 26
    Dernier message: 15/02/2006, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo