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

Python Discussion :

Lancer un scrypt python avec PHP


Sujet :

Python

  1. #1
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Lancer un scrypt python avec PHP
    J'essai d'enregistrer le contenu de variable PHP dans un fichier avec un scrypt Python sur un raspberry pi pour ensuite lire le contenu du fichier avec un autre raspberry pi. Le problème que j'ai c'est lorsque je clique sur le bouton submit du formulaire, le scrypt python ne démarre pas complètement, par contre lorsque je l'exécute en mode console, il fonctionne très bien. Est-ce que quelqu'un sait pourquoi ça ne fonctionne pas.
    Voici les fichiers:
    camera_form.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
            session_start();
            include("header.php"); 
            
    ?>
    <html>
    <body>
    <form action="camera_cible.php" method="post">
    <p>
    Nom de l'entraineur.
    <input id='nomentraineur' name='nomentraineur' type='text' maxlength="10" value="Nom max 10 caractères">
    </p>
    <p>
    Choisir le nombre de Frame par secondes.
    </p>
    <p>
    <input type="radio" name="fps" value="30" checked="checked" id="fps" /><label for="case">30 Fps</label>
    <input type="radio" name="fps" value="60" id="fps" /><label for="case">60 Fps</label>
    <input type="radio" name="fps" value="80" id="fps" /><label for="case">80 Fps</label>
    </p>
    <br>
    <input type="submit" value="Submit">
    </form>		
    </body>		
    <?php
    include("foot.php");
    ?>
    </html>

    camera_cible.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # CETTE PAGE NE FAIT QU'ENVOYER 2 VARIABLES A UNE PAGE EN PYTHON
    <p>
    </p>
    <?php
    shell_exec("python3 /var/www/html/Actuel/python/transfert.py '($_POST[nomentraineur])' '($_POST[fps])'");
    $output = shell_exec("python3 /var/www/html/Actuel/python/transfert.py '($_POST[nomentraineur])' '($_POST[fps])'");
    echo $output;
    ?>

    transfert.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/env python
    import pickle
    import sys
     
    x = sys.argv[1]
    y = sys.argv[2]
    data = (x,y)
    print(data)
    print(x,y)
    try:
        pickle.dump( data, open( "save.p", "wb" ) )
    except:
        print("erreur")
    voici le retour lorsque j'appui sur submit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # CETTE PAGE NE FAIT QU'ENVOYER 2 VARIABLES A UNE PAGE EN PYTHON
    ('(Nom2)', '(60)') (Nom2) (60) erreur
    Merci!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Si vous voyez "erreur", c'est que pickle.dump s'est à priori vautré, donc que l'open n'a peut être pas le droit de créer un fichier dans le répertoire courant.
    Plus généralement, si le script fonctionne lancé à la console et ne fonctionne plus lancé depuis PHP, c'est que l'environnement d'exécution a changé (et çà n'a rien à voir ni avec PHP ni avec Python).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si vous voyez "erreur", c'est que pickle.dump s'est à priori vautré, donc que l'open n'a peut être pas le droit de créer un fichier dans le répertoire courant.
    Plus généralement, si le script fonctionne lancé à la console et ne fonctionne plus lancé depuis PHP, c'est que l'environnement d'exécution a changé (et çà n'a rien à voir ni avec PHP ni avec Python).

    - W
    Que veux tu dire par c'est que l'environnement d'exécution a changé? Pour les autorisations de création de fichier, je crois que tout est OK, car ça fonctionne en mode console.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Boudha25 Voir le message
    Que veux tu dire par c'est que l'environnement d'exécution a changé?
    Déjà, l'utilisateur qui lance le script n'est certainement pas le même lorsque vous exécutez çà en mode console ou quand c'est via le serveur Web. Le répertoire par défaut non plus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Déjà, l'utilisateur qui lance le script n'est certainement pas le même lorsque vous exécutez çà en mode console ou quand c'est via le serveur Web. Le répertoire par défaut non plus.

    - W
    Malheureusement mon niveau de connaissance ne me permet pas de résoudre le problème. Je ne sais pas pourquoi ça ne fonctionne pas. Je comprend que l'environnement n'est pas le même a partir d'un client web qu'en console, mais le fichier transfert fonctionne a partir du web, puisqu'il me retourne le contenu des 2 variables x et y. Je ne comprends pas pourquoi le contenu des 2 variables ne s'enregistre pas dans le fichier. ????

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Bordeaux
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bordeaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Boudha25 Voir le message
    Que veux tu dire par c'est que l'environnement d'exécution a changé? Pour les autorisations de création de fichier, je crois que tout est OK, car ça fonctionne en mode console.
    Bonjour,
    Peut-être problème de droit d'accès à var/www/html/ ? Normalement il faut être administrateur pour écrire ds ce dossier...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 121
    Points : 80
    Points
    80
    Par défaut
    Oui, je pencherai pour un problème de droit d'accès
    A la place de print('erreur')

    Tu devrais mettre print(getcwd())

    Après avoir ajouté from os import getcwd en dédut de code, histoire de voir où Python cherche à écrire

    Vincent

  8. #8
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par magicvinni Voir le message
    Oui, je pencherai pour un problème de droit d'accès
    A la place de print('erreur')

    Tu devrais mettre print(getcwd())

    Après avoir ajouté from os import getcwd en dédut de code, histoire de voir où Python cherche à écrire

    Vincent
    Le retour me donne le chemin de mon fichier de camera_cible. /var/www/html/Actuel. Le fichier de sauvegarde save.p est un répertoire plus loin /var/www/html/Actuel/python. C'est peut-être ça le problème.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 121
    Points : 80
    Points
    80
    Par défaut
    Oui, donc soit tu changes le dossier de travail avec un chdir, soit tu utilises un chemin absolu dans ton open(.....)

    Ensuite se posera, comme cela a été dit le problème de droit d'écriture dans ce dossier, quand tu fais les tests directement sur le serveurs, tu as des privilèges qu'heureusement le client en faisant ça requête n'a pas, donc il faut lui mettre les droits de création d'un fichier dans ce dossier.

    Vincent

  10. #10
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par magicvinni Voir le message
    Oui, donc soit tu changes le dossier de travail avec un chdir, soit tu utilises un chemin absolu dans ton open(.....)

    Ensuite se posera, comme cela a été dit le problème de droit d'écriture dans ce dossier, quand tu fais les tests directement sur le serveurs, tu as des privilèges qu'heureusement le client en faisant ça requête n'a pas, donc il faut lui mettre les droits de création d'un fichier dans ce dossier.

    Vincent
    Merci Vincent. Tu es génial. J'ai ajouté le chemin absolu dans mon open et tout fonctionne. Pourquoi je n'ai pas pensé a ça?? C'est pourtant très simple comme solution.

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

Discussions similaires

  1. comment lancer un script python depuis php
    Par jarmouz89 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/05/2013, 16h54
  2. Lancer un script python avec argument depuis shell
    Par tidusff10 dans le forum Général Python
    Réponses: 1
    Dernier message: 30/03/2012, 12h44
  3. Lancer un script shell avec php
    Par jojo971 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/10/2010, 10h15
  4. [Système] Lancer un script python en PHP
    Par gannher dans le forum Langage
    Réponses: 10
    Dernier message: 13/09/2007, 11h24
  5. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30

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