Raspberry Pi PHP

Wer auf seinem Raspberry eine Webserver betreibt, muss über kurz oder lang dynamische Seiten erstellen. Dafür wird eine Scriptsprache wie PHP benötigt. In diesem Artikel erkläre ich, wie man auf einem Raspberry Pi PHP installiert. Viele Benutzer verwenden den Raspberry Pi und Sachen zu schalten. Dafür möchten Sie eine Website auf dem Raspberry aufrufen, über die Sie den Status z.B. einer Funksteckdose sehen und diese auch schalten können. Dafür kann man PHP nutzen.

Installation

Bevor PHP und das Apache Modul von installiert werden, sollte der Apache Webserver bereits auf dem Pi installiert sein. Wenn das so ist, können Sie PHP mit folgendem Befehl installieren.

sudo apt-get install php libapache2-mod-php -y

Prüfen

Wenn der Befehl ohne Fehlermeldungen durchgelaufen ist, kann man mit einer einfachen php Datei prüfen, ob PHP auch läuft. Das Verzeicnis des Apache Webserver, aus dem er die angeforderten Dateien ausließt lautet /var/www/html. Erstellen Sie in diesem Verzeichnis eine neue Datei test.php mit folgendem Inhalt.

<?php phpinfo(); ?>

Diese Seite kann mit der URL http://localhost/test.php vom Raspberry Pi im Webbrowser aufrufen. Wenn Sie die Seite von einem externen Rechner aufrufen wollen, müssen Sie die IP-Adresse des Raspberry anstatt localhost eingeben. Die IP-Adresse des Raspberry erfahren Sie mit dem Befehl ifconfig. Wenn folgende Informationsseite erscheint, läuft PHP als Apache Modul auf dem Raspberry Pi.

Ausgabe PHP Info auf Raspberry Pi

Ausgabe PHP Info auf Raspberry Pi

Konfiguration

Um Befehle auf dem Rasberry mit den Funktionen exec() und shell_exec() ausführen zu können und damit GPIOs zu schalten, müssen Sie noch Berechtigungen anpassen. Die PHP Scripte werden unter dem Benutzer www-data ausgeführt.  Unter Raspbian Jessie (bei anderen Versionen weiß ich nicht, wie es konfiguriert ist) sind bestimmte Rechte notwendig, um GPIOs anzusprechen. Der Benutzer muss in der Gruppe gpio sein. Daher muss man dn Benutzer www-data noch der Gruppe gpio hinzufügen.

sudo usermod -aG gpio www-data

Wenn man shell Scripte aufrufen will, muss man auf die Berechtigungen achten. So kann der Benutzer www-data keine Scripte aufrufen, die vom Benutzer pi erstellt wurden und das Recht 744 haben. Auch den Befehl sudo in einem Shell Script zu benutzen, das man mit PHP ausführt, kann zu Komplikationen führen. Der Benutzer www-data hat per default keine Berechtigungen diesen Befehl zu nutzen. Dies kann man umgehen, in dem man den Benutzer www-data zur Gruppe sudo hinzufügt.

sudo usermod -aG sudo www-data

Beispiel

In diesem Beispiel wollen wir nun eine einfache LED am Raspberry per Webserver und PHP schalten. Die Schaltung mit dem Raspberry Pi sieht folgendermaßen aus.

Legen Sie nun eine Datei led.php mit folgendem Inhalt im Verzeichnis /var/www/html an.

<html> <head> <title>LED</title> </head> <body> LED schalten: <form method="get" action="led.php"> <input type="submit" value="ON" name="on"> <input type="submit" value="OFF" name="off"> </form> <?php shell_exec("/usr/local/bin/gpio -g mode 17 out"); if(isset($_GET['on'])){ shell_exec("/usr/local/bin/gpio -g write 17 1"); echo "LED ist an"; } else if(isset($_GET['off'])){ shell_exec("/usr/local/bin/gpio -g write 17 0"); echo "LED ist aus"; } ?> </body> </html> ...  mehr lesen