Python-Skripte über PHP ausführen

Wer ein schönes LED-Programm mit Python geschrieben hat, will natürlich nicht immer PyTTY verwenden müssen, um es über SSH in der Kommandozeile auszuführen. Die einfachste Variante wäre es über eine Webseite auszuführen. Einen Webserver auf den Raspberry Pi einzurichten ist ganz leicht, wie man hier nachlesen kann. Was die Ausführung in PHP angeht, da wird nur ein Befehl benötigt um ein Python-Skript auszuführen.

Für das Beispiel soll ein Relais-Modul verwendet werden, dass es in Ebay in mehreren Varianten gibt. Hier wird das 4-Kanal-Relais-Modul verwendet. In den Beispiel soll jede Sekunde ein Relais anziehen, solange bis alle vier Relais angezogen sind. Anschließend soll das ganze Spiel wieder rückwärts laufen. Das Python-Skript wird einfach im Home-Verzeichnis vom Benutzer Pi erstellt.

Damit PHP, richtigerweise der Benutzer www-data, die Berechtigung erhält den sudo-Befehl im PHP-Skript auszuführen, muss der Benutzer www-data ersteinmal mit sudo-Rechten für Python selbst und für das Python-Skript ausgestattet werden. Dies geschieht in der sudoers.tmp, die mit dem Befehl visudo im Nano-Editor aufgerufen wird.

sudoers

Falls mal ein Python-Skript mit Parametern aufgerufen werden soll, muss die Anzahl der Parameter mit * angegeben werden.

Jetzt wird nur noch ein PHP-Skript benötigt was das Python-Skript aufruft. In PHP benötigt man nur ein Befehl zum Ausführen eines Kommandos auf der Shell, shell_exec(). Dieser PHP-Befehl kann jeden Befehl ausführen den man auch direkt in die Kommandozeile des Raspberry Pi hineinschreiben würde und gibt anschließend einen String mit einem vermeintlichen Output zurück. Das heißt, man könnte hier auch Is -l  hineinschreiben und eine Verzeichnisliste als String zurückbekommen. In  diesen Beispiel wird durch das Python-Skript aber nichts zurückgegeben, wodurch auf der Webseite nur “Relais-Test” erscheint.

relais-Test
Relais eins und zwei sind angezogen.