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] exécution d'un programme externe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut [Système] exécution d'un programme externe
    EDIT : LIRE MON 2EME POST AVANT TOUT. DESOLE !!





    Bonjour,

    je souhaite executer tout un programme que j'ai écrit en C via php (je souhaite ensuite récuperer ses sorties pour faire une mise a jour d'une base de donnée).

    Mais voilà, exec, shell_exec & tout le reste ne marche pas.

    J'ai fait un petit diagnostic :

    marche

    marche, yo étant un programme balourd qui retourne "yo"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo exec("./DigEnz -h"); // censé afficher l'aide
    ne marche pas. DigEnz étant ce fameux programme que j'ai codé. Il marche parfaitement en dehors du contexte php et je lui ai mis les pleins droits à l'utilisateur apache ainsi que son groupe.
    Quand je dis marche pas, aucune valeure n'est retournée sauf un 1 si je tente de le lancer via system et regarde son 2eme argument.

    Du coup j'ai voulu tenter d'executer petit bout par petit bout le contenu de ce DigEnz.
    Il utilise une libraire externe nomée acnuc et sans doute que le problème viendrait de là.

    Donc dèrière un executable disons yo2.c dont voici la teneur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "dir_acnuc.h"  // ===> la fameuse librairie
    #include <stdio.h>
    #include <stdlib.h>
    #include <search.h>
    #include <regex.h>
     
    int main(int argc, char **argv) {	
    	printf("\nyo\n");
    }
    que je compile comme il faut ( gcc -o yo2 yo2.c -I/usr/local/acnuc/lib/ -L/usr/local/acnuc/lib/ -lcacnuc) pusiqu'il marche dans un terminal

    et bien ça marche

    Mais si j'ajoute dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "dir_acnuc.h"  // ===> la fameuse librairie
    #include <stdio.h>
    #include <stdlib.h>
    #include <search.h>
    #include <regex.h>
     
    int main(int argc, char **argv) {	
    	acnucopen(); // ===> le coupable
            printf("\nyo\n");
    }
    qui est une fonction de cette librairie, ça ne marche plus (systeme donne 1 comme valeur de retour et pas de "yo" qui s'affiche).

    Normalement cette fonction devrait avoir besoin de 2 variables d'environnement, mais quand je lance dans un terminal ce programme à partir d'un utilisateur pour lequel ces variables ne sont pas définies, le programme affiche quand même yo ...

    Est ce que vous comprennez quelque chose?
    J'aurais beaucoup de chance de tomber sur un pro du C et du php à la fois qui puisse me répondre mais bon je commence à craquer ça fait pas mal de temps que je trimme dessus.

    Merci d'avance, Yan

    PS : là je part manger mais dès les 14h30 je répondrais à toutes les questions, même indiscrètes si vous voulez

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut
    Normalement cette fonction devrait avoir besoin de 2 variables d'environnement, mais quand je lance dans un terminal ce programme à partir d'un utilisateur pour lequel ces variables ne sont pas définies, le programme affiche quand même yo ...
    Hum je crois en fait me planter en disant ça.

    Avant de vous prendre la tête, comment fait-on pour définir des variables d'environnement pour l'utilisateur apache (via php ???)

    On voit des variables d'environnement dans les resultats de php_info().
    C'est là que ça se passe ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut
    Citation Envoyé par wonderyan Voir le message
    Hum je crois en fait me planter en disant ça.

    Avant de vous prendre la tête, comment fait-on pour définir des variables d'environnement pour l'utilisateur apache (via php ???)

    On voit des variables d'environnement dans les resultats de php_info().
    C'est là que ça se passe ?
    Ca ne marche pas je viens juste de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "putenv1 : ".putenv("gcgacnuc=/home/yann/ACNUC/refseq/flat_files/")."<br/>";
    echo "putenv2 : ".putenv("acnuc=/home/yann/ACNUC/refseq/index/")."<br/>";
    echo "exec de yo2 : ".exec("./yo2 -h", $output)."<br/>";
     
    echo "exec de  : ".exec("echo $acnuc");
    et ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    putenv1 : 1
    putenv2 : 1
    exec de yo2 :
    exec de :
    Bons appetis, a tout a l'heure...

Discussions similaires

  1. Exécution d'un programme externe
    Par morofiler dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2010, 17h29
  2. Exécution d'un programme externe
    Par DSGSLA dans le forum C++
    Réponses: 10
    Dernier message: 21/04/2010, 15h24
  3. Réponses: 7
    Dernier message: 03/12/2009, 16h22
  4. Réponses: 3
    Dernier message: 06/06/2007, 15h19
  5. exécution d'un programme externe
    Par didiss dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 04/04/2007, 12h29

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