[Python/PHP] - Lancement script python à partir d'un serveur Apache2
Posté : lun. 24 juin 2019 09:00
Bonjour,
Je cherche à lancer un script python sur mon raspberry à partir d'un serveur Web.
Le serveur web est sur : Apache/2.4.25 (Raspbian)
Je positionne le php dans /var/www/evo/Camon.php
Le code du php :
exec('python /var/www/html/cgi-bin/Camon.py')
Je positionne le script dans /var/www/html/cgi-bin/script.py
Le script :
#!usr/bin/python
import os
os.system('sudo /home/pi/Domo/Scripts/433Utils/RPi_utils/./codesend XXXXXXX -l 200')
Si j'execute le script via : sudo /home/pi/Domo/Scripts/433Utils/RPi_utils/./codesend XXXXXXX -l 200 dans le terminal sur le raspberry le script fonctionne.
En revanche via le serveur web, rien ne se passe.
J'ai aussi essayé dans le code php de mettre :
sudo /var/www/html/cgi-bin/Camon.py
Le résultat est le même rien ne se passe.
Après plusieurs heures de recherche sur le net, j'en arrive à la conclusion qu'il s'agit d'une question de droit.
Je suis perdu entre les utilisateurs root, www-data, la modification des fichier de configuration apache etc. J'ai l'impression de foutre en l'air mon serveur à force de bidouiller sans savoir exactement ce que je fais.
J'ai essayé de faire sudo chown -R root:www-data /var/www --> le problème persiste
J'ai tenté de suivre la directive à partir de ce lien : https://stackoverflow.com/questions/914 ... in-apache2
edit file /etc/apache2/conf-enables/serve-cgi-bin.conf
====comment old section and add code below:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AddHandler cgi-script .py
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
edit file /etc/apache2/apache2.conf ***add code below:
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/cgi-bin">
Options All
</Directory>
<Directory /usr/local/apache2/cgi-bin>
Require all granted
</Directory>
Rien à faire...
Quelqu'un peut-il m'aider ?
Je cherche à lancer un script python sur mon raspberry à partir d'un serveur Web.
Le serveur web est sur : Apache/2.4.25 (Raspbian)
Je positionne le php dans /var/www/evo/Camon.php
Le code du php :
exec('python /var/www/html/cgi-bin/Camon.py')
Je positionne le script dans /var/www/html/cgi-bin/script.py
Le script :
#!usr/bin/python
import os
os.system('sudo /home/pi/Domo/Scripts/433Utils/RPi_utils/./codesend XXXXXXX -l 200')
Si j'execute le script via : sudo /home/pi/Domo/Scripts/433Utils/RPi_utils/./codesend XXXXXXX -l 200 dans le terminal sur le raspberry le script fonctionne.
En revanche via le serveur web, rien ne se passe.
J'ai aussi essayé dans le code php de mettre :
sudo /var/www/html/cgi-bin/Camon.py
Le résultat est le même rien ne se passe.
Après plusieurs heures de recherche sur le net, j'en arrive à la conclusion qu'il s'agit d'une question de droit.
Je suis perdu entre les utilisateurs root, www-data, la modification des fichier de configuration apache etc. J'ai l'impression de foutre en l'air mon serveur à force de bidouiller sans savoir exactement ce que je fais.
J'ai essayé de faire sudo chown -R root:www-data /var/www --> le problème persiste
J'ai tenté de suivre la directive à partir de ce lien : https://stackoverflow.com/questions/914 ... in-apache2
edit file /etc/apache2/conf-enables/serve-cgi-bin.conf
====comment old section and add code below:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AddHandler cgi-script .py
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
edit file /etc/apache2/apache2.conf ***add code below:
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/cgi-bin">
Options All
</Directory>
<Directory /usr/local/apache2/cgi-bin>
Require all granted
</Directory>
Rien à faire...
Quelqu'un peut-il m'aider ?