[resolu]Lancer un script Python en PHP

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Lancer un script Python en PHP

Message par domi » jeu. 11 déc. 2014 11:11

essais l'adresse absolu.
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.

mike913
Raspinaute
Messages : 247
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lancer un script Python en PHP

Message par mike913 » jeu. 11 déc. 2014 11:19

Bonjour,

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

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer un script Python en PHP

Message par zeverybest » jeu. 11 déc. 2014 11:58

domi a écrit :essais l'adresse absolu.
commencer au /
J'ai essayé system("python /monfichier.py") ou system("sudo python /monfichier.py")

Pas mieux

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer un script Python en PHP

Message par zeverybest » jeu. 11 déc. 2014 12:00

mike913 a écrit :Bonjour,

Si tu lister ton fichier monfichier.py il y a peut-être une erreur dans la script python
Si je lance mon fichier en ligne de commande dans une console du Raspberry par python monfichier.py cela fonctionne tres bien

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer un script Python en PHP

Message par zeverybest » jeu. 11 déc. 2014 12:32

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")

mike913
Raspinaute
Messages : 247
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lancer un script Python en PHP

Message par mike913 » jeu. 11 déc. 2014 13:26

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 ?
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

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lancer un script Python en PHP

Message par vague nerd » jeu. 11 déc. 2014 13:28

Bonjour.
zeverybest a écrit :Le script fonctionne en ligne de commande, mais pas en php ; system("monscript.sh") ou system("./monscript.sh")
Attention. Si bous lancer ./script.sh à partir de votre répertoire utilisateur, ce n'est pas équivalent si c'est apache qui le lance.
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

mike913
Raspinaute
Messages : 247
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lancer un script Python en PHP

Message par mike913 » jeu. 11 déc. 2014 13:43

Le script suivant situé dans mon répertoire home fonctionne en ligne de commande:

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)
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);
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

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer un script Python en PHP

Message par zeverybest » jeu. 11 déc. 2014 13:47

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
Modifié en dernier par zeverybest le jeu. 11 déc. 2014 13:57, modifié 1 fois.

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lancer un script Python en PHP

Message par vague nerd » jeu. 11 déc. 2014 13:50

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.
Cordialement,

Vague Nerd

Répondre

Retourner vers « Python »