Mit PHP Python-Skript ausführen?
Hallo! Ich bin etwas am Verzweifeln. Ich möchte auf einem Raspberry Pi über einen Webserver ein PHP-Skript ausführen, welches ein Python-Skript ausführt und ein paar Lampen zum Leuchten bringt.
Meine Python-Skripte laufen 1A. Ich habe jetzt einiges ausprobiert und mein Resultat bisher ist, dass er mir die Python-Datei herunterlädt (fragt mich nicht, wie ich das angestellt habe ...).
Hier mein Code:
HTML Datei:
<html DOCTYPE!>
<form method="POST" action="ampel.php"
<input type="submit" name="ampel">
</form>
Die PHP-Datei:
<?php
if (isset($_POST['ampel'])) {
exec('python ampel.py', $output, $return_var);
echo("Ampel läuft");
}
?>
Das Python-Skript ist, denke ich, eher unnötig. Falls es benötigt wird, poste ich es natürlich.
Zudem sei gesagt:
- sudoers wurden angepasst, damit www die Skripte ausführen darf (und auch wirklich nur eben diese
- Schreibrechte, Ausführen darf jeder
- PHP error.log sagt gar nichts
Dankeschön. :)
4 Antworten
Versuchs mal mit
shell_exec('python ampel.py');
Meinst du mit der Datei die gesamte PHP-Datei, also den Quellcode?
Nein, er gibt mir den Quellcode der ampel.py wieder.
Lass dir doch mal die Rückgabe Werte ausgeben:
<?php
if (isset($_POST['ampel'])) {
exec('python ampel.py', $output, $return_var);
echo "Rückgabe mit Status $return_var und Ausgabe:\n";
print_r($output);
echo("Ampel läuft");
}
?>
nur zum verständnis
www-data ALL=(root) NOPASSWD: /usr/bin/python
hast du eingetragen .
www-data ALL=NOPASSWD:/var/www/html/ampel.py
www-data ALL=NOPASSWD:/var/www/html/lichterkette.py
So hab ich es eingetragen
naja damit kannst du aber nicht python starten , sondern nur zugriff auf die scripte haben .
dein befehl will aber python starten .
probier mal dich als ww-data anzumelden und dann python deinscript.py zu starten , das wird nichts werden .
Hab eben mal die zeile hinzugefügt mit dem gleichen Ergebnis wie vorher
du kannst das problem umgehen indem du im python script die Shebang hinzufügst . beispiel:
#!/usr/bin/env python
dann aber ohne python die shell_exec ausführen
aber script ist jetzt auch für besitzer www-data ausführbar und ist natürlich auch vom besitzer www-data :)
also am besten wie immer chmod 755 .
und bei zwei scripten einach die pfade mit komma trennen und nicht 2 einträge machen .
ggf noch
sudo python scriptblabla.py
bzw nur sudo scriptblabla.py
hast du nochmal das gelesen was ich dazugefügt habe , also keine 2 einträge sondern 1 eintag und die script pfade mit komma trennen .
Jap, alles gemacht. Das Python Script lässt sich ja wie gesagt einwandfrei ausführen.. :/
hä ich dachte du bekommst das python script als download ?
also lässt es sich jedenfalls nicht nicht vom apache mod_php ausführen .
btw ist das auch einem raspberry ?
hast du fehlermeldungen beim php angeschaltet , findet sich sonstwas im system an logs dazu ?
Was nutzt Dir die Anpassung von sudoers, wenn Du gar kein sudo ausführst?
War auch schon ein Versuch. Leider das gleiche Ergebnis. Er spuckt mir nur die Datei aus.