Exécuter le script Python à partir de Php
j'ai une page Web PHP sur mon raspberry pi avec 2 boutons (on et off)) Le bouton le bouton redirige Sur.php Le bouton off redirige vers Off.php Dans "/ usr / lib / cgi-bin", j'ai un script python que je voudrais exécuter (script.py) Je peux parfaitement l'exécuter à partir du terminal en tapant
cd /usr/lib/cgi-bin
sudo python script.py
ça marche si je le fais depuis le terminal.
le problème est le fichier PHP (On.php) dans mon "/var/www" le dossier. C'est ce que j'ai écrit:
<?php
exec('cd /usr/lib/cgi-bin');
exec('sudo python script.py');
?>
Pourquoi le script qui s'exécute depuis le terminal, mais pas depuis mon PHP?
3 réponses
vous ne pouvez pas utiliser sudo à partir d'un script PHP. Apache s'exécute à partir d'un utilisateur (www-data generaly), alors éditez ce fichier:/etc/sudoers
puis ajouter cette ligne:
www-data ALL=(ALL) NOPASSWD:ALL
Soins ! cela autorisera toutes les fonctions à être appelées par un script PHP, vous pouvez adapter la modification de "tout" par votre script ou la commande Python.
alors précisez votre utilisateur dans votre commande exec:
<?php
exec('sudo -u www-data python /usr/lib/cgi-bin/script.py')
Essayer, cela devrait fonctionner:
<?php
system("cd /usr/lib/cgi-bin");
system("sudo python script.py");
?>
Ou encore:
<?php
system("cd /usr/lib/cgi-bin && sudo python script.py");
?>
sur une ancienne distribution Raspbian, vous devez placer votre fichier dans /var/www/file.py
. Donc, dans votre fichier.php vous ajoutez:
{
exec("sudo python /var/www/file.py");
}
sur une Jessie Raspabe plus récente vous devez placer votre fichier dans /var/www/html/file.py
, donc dans votre fichier.php, vous devez ajouter:
{
exec("sudo python /var/www/html/file.py");
}
ou n'importe laquelle file.py
<?php
{
exec("sudo python test.py");
}