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 ?
[Python/PHP] - Lancement script python à partir d'un serveur Apache2 [RESOLU]
Modérateurs : Francois, Manfraid
Re: [Python/PHP] - Lancement script python à partir d'un serveur Apache2 [RESOLU]
J'ai trouvé grâce au lien suivant : https://askcodez.com/executer-un-script ... e-php.html
sudo nano /etc/sudoers
puis ajouter :
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL
sudo nano /etc/sudoers
puis ajouter :
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL
-
- Administrateur
- Messages : 3233
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: [Python/PHP] - Lancement script python à partir d'un serveur Apache2
Bonjour,
Il y a effectivement un problème de droit, mais je ne pense pas que le problème soit dans ton "www".
Je vois deux problèmes possibles à vérifier :
Il y a effectivement un problème de droit, mais je ne pense pas que le problème soit dans ton "www".
Je vois deux problèmes possibles à vérifier :
- Tu exécutes un script qui se trouve dans le homedirectory de "pi" : "/home/pi/Domo/Scripts/......". Il faut vérifier si l'utilisateur "www-data" y a accès. Ce qui m'étonnerai puisque c'est le homedirectory d'un utilisateur, il faut donc déplacer ce script.
- Tu lances via le script PHP une commande "SUDO", est-ce que le sudoers a été configuré afin que www-data puisse utiliser cette commande via sudo. Attention à bien restreindre au strict minimum le sudo de ww-data, surtout si le Rpi est accessible depuis internet, car c'est donner les droits ROOT via internet sans mot de passe.
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.
-
- Administrateur
- Messages : 3233
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: [Python/PHP] - Lancement script python à partir d'un serveur Apache2
Même si cela semble être la même chose, il est préférable d'utiliser la commande "sudo visudo" plutôt qu'éditer directement le script.
Je viens de le dire ci-dessus, c'est justement ce qu'il ne faut pas faire.
Ne pas mettre ALL après NOPASSWD, mais uniquement la ou les commandes nécessaire.
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.
Re: [Python/PHP] - Lancement script python à partir d'un serveur Apache2
Salut à tous.
On ne peut pas lancer un script à partir du serveur apache.
Sauf si l'on vient modifier la procédure qui lance apache.
L'intérêt est limité voire même inexistante.
Il faudrait définir l'action qui va provoquer le lancement de votre script ?
Peut-être en cliquant sur un bouton dans une page web ?
Dans ce cas, c'est du CGI que l'on peut associer à du perl, par exemple.
Apache est configurable pour gérer du CGI.
@+
On ne peut pas lancer un script à partir du serveur apache.
Sauf si l'on vient modifier la procédure qui lance apache.
L'intérêt est limité voire même inexistante.
Il faudrait définir l'action qui va provoquer le lancement de votre script ?
Peut-être en cliquant sur un bouton dans une page web ?
Dans ce cas, c'est du CGI que l'on peut associer à du perl, par exemple.
Apache est configurable pour gérer du CGI.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32
Re: [Python/PHP] - Lancement script python à partir d'un serveur Apache2
Merci pour vos réponses, je prends notes et je vais voir pour modifier tout ça.