Page 1 sur 1

[RESOLU] executer script python depuis page php

Posté : ven. 26 juin 2015 23:50
par usertop57
Bonsoir, voila une semaine que je cherche une solution à mon problème sans résultat ! Je possède un raspberry pi 2 avec Raspbian qui est connecté par le port USB a une carte ARDUINO UNO. et j'ai crée un programme en python qui lorsque celui ci est exécuté, envoi un chiffre (le n°7 dans notre cas) actionnant le relais de la carte connecté à l'arduino :

donc voici mon programme python que j'ai crée : (on_pellet.py)

Code : Tout sélectionner

#! /usr/bin/env python
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
time.sleep(3)
ser.write(7)
print "relais allume"
j'ai installé php et mysql sur raspbian et j'ai placé mon programme en python dans le dossier /var/www
Lorsque dans le terminal je me position dans le dossier /var/www et que j’exécute le script python avec la commande : python on_pellet.py
j'ai en retour "relais allume" et le relais de la carte arduino est actionné.
Donc pas de soucis au niveau de python

La ou sa ce corse, c'est que j'essaye d’exécuter le script en ouvrant un page web, ainsi voici le code de ma page web index.php qui se trouve dans le même dossier que le script python (/var/www) :

Code : Tout sélectionner

<?php
echo 'mise en marche du relais';
exec('python on_pellet.py')
?>
j'ouvre la page dans le navigateur web mais rien ne se passe, j'ai essayé avec system à la place de exec mais rien non plus, j'ai essayé en spécifiant le chemin complet du script 'on_pellet.py' mais rien non plus, alors j'avais pensé à un problème de droit sur les fichier alors dans le dossier /var/www j'ai passé le propriétaire et le groupe de propriétaire au 'pi' mais toujours rien !!
je sèche plus aucune idée :| :| pouvez m'aider ?

Re: executer script python depuis page php

Posté : sam. 27 juin 2015 00:00
par vague nerd
Bonsoir.
Votre serveur web ne doit pas avoir le droit de lancer votre script. Quel est votre serveur web ?
Habituellement, le user à qui il faut donner les droits, c'est www-data...

Si je vous parle klingon, lisez ceci !
Cdt.

Re: executer script python depuis page php

Posté : sam. 27 juin 2015 00:18
par usertop57
merci pour cette réponse rapide, j'ai installé apache comme serveur.

J'ai défini comme utilisateur www-data pour les fichiers on_pellet.py et index.php
mais ca n'a pas changé !

Re: executer script python depuis page php

Posté : sam. 27 juin 2015 01:04
par vague nerd
Ca n'aurait déjà pas marché sans ça (le user apache 2 est bien www-data).

Je remarque que

Code : Tout sélectionner

exec('python on_pellet.py')
ne donne pas le chemin du script. Le script est à la racine de www ? Sinon, précisez le chemin relativement à www.
EDIT : j'ai rien dit (mais essayez quand même avec le chemin complet) :
j'ai installé php et mysql sur raspbian et j'ai placé mon programme en python dans le dossier /var/www
Lorsque dans le terminal je me position dans le dossier /var/www et que j’exécute le script python avec la commande : python on_pellet.py
Le user www-data a le droit d'exécuter python ? Le chemin de python est connu de www-data ?

Enfin, il faut regarder les log du serveur. Vous y trouverez surement l'explication, mais sans sa langue à lui !

Cdt.

Re: executer script python depuis page php

Posté : sam. 27 juin 2015 13:18
par usertop57
merci vague nerd, le problème venait du fait que l'utilisateur www-data ne pouvait executer le script on_pellet.py
j'ai donc fait un : sudo chown -R www-data:www-data /var/www/on_pellet.py

decidement ces histoires de droits sur linux je ne m'y ferait jamais, en tout cas merci pour ton aide :D :mrgreen: ;)

Re: executer script python depuis page php

Posté : sam. 27 juin 2015 16:57
par vague nerd
Tant mieux et avec plaisir.

Mais je croyais que c'est ce que vous vouliez dire par :
J'ai défini comme utilisateur www-data pour les fichiers on_pellet.py et index.php
Si vous estimez que votre problème est résolu, merci d'ajouter [RESOLU] au début du titre du sujet.
Pour ce faire, visualiser le premier Post que vous avez réalisé, cliquez sur "Editer", et ajouter [RESOLU] devant le titre.

Cela permet que le message soit tout de suite identifié comme ayant eu une réponse correspondant à la demande.
Ainsi, les visiteurs en sont informés, aussi bien lors d'une recherche sur le forum qu'au travers des moteurs de recherche.

Merci d'avance !

Cordialement.