Bonjour,
Normalement, je dis bien normalement car j’ai toujours vu cela uniquement, pour travailler avec perl, python etc sur un serveur web il faut utiliser les CGI (Common Gateway Interface — Wikipédia). Cela se fait en installant le nécessaire sur le serveur web et permet de définir l’execution de fichier avec une extension en fonction du langage choisi et de configurer plus ou moins automatiquement l’environnement d’exécution, ici python sur apache:
https://bruno.lsis.univ-tln.fr/python/cgi
L’intérêt en faisant cela et que le serveur a les variables d’environnements configurées et donc les chemins des librairies python sont trouvées et le script alors exécutable. Il est possible que votre problème vient de là si ce n’est pas à cause des droits root pour l’accès aux ports GPIO.
En fait par défaut votre serveur (si il est configuré avec php) va conprendre ce type d’url:
https://unsite.com/index.php ou https://unsite.com/index.html ...
pour qu’il comprenne ceci :
https://unsite.com/index.py
Il faut le configurer pour et pour cela on utilise les CGI.
Depuis la doc php :
http://php.net/manual/fr/function.exec.php
return_var
Si l'argument return_var est présent en plus du tableau output, alors le statut de retour d'exécution sera inscrit dans cette variable.
Que donne un :
exec ( 'python /home/pi/Scripts/test.py', $output,$return_var );
echo "ERREUR: ".$return_var.PHP_EOL;
echo "BUFFER: ".$output.PHP_EOL;
Puis votre script doit être à un endroit où le serveur à le droit d’accès. Actuellement /home/pi/Scripts/… est le chemin de votre utilisateur sous Linux alors que pour les serveurs webs en principe c’est plus par ici /var/www/ ou /var/www/html par défaut avec pour apache l’utilisateur et groupe www-data (vous ne m’avez pas spécifié le type de serveur que vous utilisez, ça faciliterai la tache pour vous aider) . Avez-vous fait ceci :
sudo chmod -R ug+rwx /home/pi/Scripts
sudo chmod -R o-rwx /home/pi/Scripts
sudo chown -R www-data:www-data /home/pi/Scripts
Autre chose importante , avez-vous fait ceci (en ajustant le nom de l’utilisateur et le groupe en fonction du votre):
Cette action n’est pas nécessaire si vous avez celle juste ci-dessus, -R spécifie une récursion
sudo chmod ug+rwx /home/pi/Scripts/test.py
sudo chmod o-rwx /home/pi/Scripts/test.py
sudo chown www-data:www-data /home/pi/Scripts/test.py
Votre exec est lancé en PHP et donc par le serveur web , l’utilisateur et le groupe du serveur web précisément. Donc si vous n’avez pas ajuster les droits comme il faut et assigné le bon propriétaire cela ne fonctionnera pas.
Pour vérifier les droits actuels sur un fichier/dossier sur linux:
ls -l /home/pi/Scripts
ls -l /home/pi/Scripts/test.py
vous devez avoir le bon utilisateur, le bon groupe et les droits (r=read, w=write, x=executable) sur les fichiers/dossiers, utilisateur et groupe correspondant au serveur et les droits en fonction de vos besoins, sachant que ‹ r › (read, lire, droit de lecture, droit de lire le fichier en français) est le minimum pour pouvoir avoir une sortie et voir quelque chose.
En php une commande system en appelant id vous donnera des informations :
system("id");
Puis observez la sortie dans votre page html/php.