[resolu]Lancer un script Python en PHP
Modérateurs : Francois, Manfraid
-
- Administrateur
- Messages : 3233
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Lancer un script Python en PHP
essais l'adresse absolu.
commencer au /
commencer au /
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
-
- Raspinaute
- Messages : 247
- Enregistré le : mar. 7 oct. 2014 09:46
- Localisation : Morsang / Orge - Essonne
- Contact :
Re: Lancer un script Python en PHP
Bonjour,
Si tu lister ton fichier monfichier.py il y a peut-être une erreur dans la script python
Si tu lister ton fichier monfichier.py il y a peut-être une erreur dans la script python
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
-
- Raspinaute
- Messages : 136
- Enregistré le : sam. 18 oct. 2014 19:09
Re: Lancer un script Python en PHP
J'ai essayé system("python /monfichier.py") ou system("sudo python /monfichier.py")domi a écrit :essais l'adresse absolu.
commencer au /
Pas mieux
-
- Raspinaute
- Messages : 136
- Enregistré le : sam. 18 oct. 2014 19:09
Re: Lancer un script Python en PHP
Si je lance mon fichier en ligne de commande dans une console du Raspberry par python monfichier.py cela fonctionne tres bienmike913 a écrit :Bonjour,
Si tu lister ton fichier monfichier.py il y a peut-être une erreur dans la script python
-
- Raspinaute
- Messages : 136
- Enregistré le : sam. 18 oct. 2014 19:09
Re: Lancer un script Python en PHP
J'ai meme essayé de fair un script en batc qui lance mon fichier python
Le script fonctionne en ligne de commande, mais pas en php ; system("monscript.sh") ou system("./monscript.sh")
Le script fonctionne en ligne de commande, mais pas en php ; system("monscript.sh") ou system("./monscript.sh")
-
- Raspinaute
- Messages : 247
- Enregistré le : mar. 7 oct. 2014 09:46
- Localisation : Morsang / Orge - Essonne
- Contact :
Re: Lancer un script Python en PHP
est-ce que le script php et le script python sont dans le même répertoire.
Et le fichier /var/log/apache2/error.log donne Quoi ?
Et le fichier /var/log/apache2/error.log donne Quoi ?
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
- vague nerd
- Modérateur
- Messages : 1473
- Enregistré le : mar. 14 oct. 2014 11:42
- Localisation : France !
Re: Lancer un script Python en PHP
Bonjour.
Admettons que le script soit dans le répertoire utilisateur de l'utilisateur pi. Sont chemin absolu est /home/pi/monscript.sh.
En relatif, '.' représente le répertoire courant, '..' le répertoire parent. Si vous être dans le répertoire /home/pi/, ./monscript.sh va lancer le script. Si vous êtes n'importe où ailleurs, ça ne marchera pas.
En particulier si c'est apache qui lance le script par ./monscript.sh.
Essayer d'indiquer le chemin complet vers le scrtipt ! Par exemple system("/home/pi/monscript.sh")...
Suis-je clair ?
Cdt.
Attention. Si bous lancer ./script.sh à partir de votre répertoire utilisateur, ce n'est pas équivalent si c'est apache qui le lance.zeverybest a écrit :Le script fonctionne en ligne de commande, mais pas en php ; system("monscript.sh") ou system("./monscript.sh")
Admettons que le script soit dans le répertoire utilisateur de l'utilisateur pi. Sont chemin absolu est /home/pi/monscript.sh.
En relatif, '.' représente le répertoire courant, '..' le répertoire parent. Si vous être dans le répertoire /home/pi/, ./monscript.sh va lancer le script. Si vous êtes n'importe où ailleurs, ça ne marchera pas.
En particulier si c'est apache qui lance le script par ./monscript.sh.
Essayer d'indiquer le chemin complet vers le scrtipt ! Par exemple system("/home/pi/monscript.sh")...
Suis-je clair ?
Cdt.
Cordialement,
Vague Nerd
Vague Nerd
-
- Raspinaute
- Messages : 247
- Enregistré le : mar. 7 oct. 2014 09:46
- Localisation : Morsang / Orge - Essonne
- Contact :
Re: Lancer un script Python en PHP
Le script suivant situé dans mon répertoire home fonctionne en ligne de commande:
mais ne fonctionne plus dans le cas d'appel par un script php situé dans le répertoire /var/www/
car dans la ligne cfgConf = Get_Config('Test.ini') le nom du fichier à lire ne comprend pas le chemin complet et en remplaçant cfgConf = Get_Config('Test.ini') par cfgConf = Get_Config('/home/pi/Test.ini') plus d' erreur.
Dans la commande system tu peux mettre un paramètre pour avoir le résultat de la fonction (true ou false)
exemple: system($commande,$retour);
Code : Tout sélectionner
#!/usr/bin/env python
# coding=UTF-8
# =====================================
# import des modules
import serial
import datetime
import time
import struct
import sys
import os
import ConfigParser
# ----------------------------------------------------------------------------
# Lit la configuration
# ----------------------------------------------------------------------------
def Get_Config(configfile):
cfg = ConfigParser.ConfigParser()
cfg.read(configfile)
return cfg
# ----------------------------------------------------------------------------
# Ecrit dans le fichier de configuration
# ----------------------------------------------------------------------------
def Set_Config(configfile, cfg):
with open(configfile, 'wb') as config:
cfg.write(config)
#-------------------------------------------
# Boucle principale
#-------------------------------------------
cfgConf = Get_Config('Test.ini')
print cfgConf.get('Fichiers', 'meteoxml')
cfgConf.set('Fichiers', 'meteoxml','nouvelle Valeur')
Set_Config('Test.ini', cfgConf)
car dans la ligne cfgConf = Get_Config('Test.ini') le nom du fichier à lire ne comprend pas le chemin complet et en remplaçant cfgConf = Get_Config('Test.ini') par cfgConf = Get_Config('/home/pi/Test.ini') plus d' erreur.
Dans la commande system tu peux mettre un paramètre pour avoir le résultat de la fonction (true ou false)
exemple: system($commande,$retour);
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
-
- Raspinaute
- Messages : 136
- Enregistré le : sam. 18 oct. 2014 19:09
Re: Lancer un script Python en PHP
Alors, voici mes infos :
Si je passe par un script en batc qui me lance mon script python, celui ci est bien executé, puisque j'ai ajouté une commande echo "test" et une commande ls dans ce script et ces 2 actions fonctionne, mais pas l'execution de mon script python
Le message error.log de /var/log/apache2 me donne ceci :
Traceback (most recent call last):
File"/var/www/brouillon/monfichier.py, line3 in <module>
import RPi.GPIO as GPIO
RPi.GPIO.setupExecution : No acces to /dev/mem. Try running as root
Pourtant, j'ai donné tous les droit a monfichier.py et l'ai associé a www-data
Deplus, lorsque je rajoute sudo devant mon python /var/www/brouillon/monfichier.py, le error.log me dit :
sudo : no tty present and no askpass program specified
Pour info, mon fichier python n'a pour fonction pour le moment, que de faire clignoter une LED connecter a un port GPIO
Si je passe par un script en batc qui me lance mon script python, celui ci est bien executé, puisque j'ai ajouté une commande echo "test" et une commande ls dans ce script et ces 2 actions fonctionne, mais pas l'execution de mon script python
Le message error.log de /var/log/apache2 me donne ceci :
Traceback (most recent call last):
File"/var/www/brouillon/monfichier.py, line3 in <module>
import RPi.GPIO as GPIO
RPi.GPIO.setupExecution : No acces to /dev/mem. Try running as root
Pourtant, j'ai donné tous les droit a monfichier.py et l'ai associé a www-data
Deplus, lorsque je rajoute sudo devant mon python /var/www/brouillon/monfichier.py, le error.log me dit :
sudo : no tty present and no askpass program specified
Pour info, mon fichier python n'a pour fonction pour le moment, que de faire clignoter une LED connecter a un port GPIO
Modifié en dernier par zeverybest le jeu. 11 déc. 2014 13:57, modifié 1 fois.
- vague nerd
- Modérateur
- Messages : 1473
- Enregistré le : mar. 14 oct. 2014 11:42
- Localisation : France !
Re: Lancer un script Python en PHP
Nous sommes plusieurs à vous avoir recommander de tester en utilisant des noms de fichiers absolus, c'est à dire en indiquant le répertoire complet du fichier. Par exemple /home/pi/script.sh.
Avez-vous essayé ? J'ai raté quelque chose ?
Cdt.
Avez-vous essayé ? J'ai raté quelque chose ?
Cdt.
Cordialement,
Vague Nerd
Vague Nerd