Manchmal liegt das gute so nah und man sieht es nicht. Tatsächlich ist es so genial einfach, PHP auf dem Raspberry Pi zum Laufen zu bringen, dass es schon wieder zu einfach ist. Eigentlich braucht man für PHP ja einen Webserver, der die HTTP-Kommunikation mit dem Browser übernimmt und bei jeder HTTP-Anfrage dann die PHP-Skripts ausführt. Hierfür bietet Buildroot mindestens vier verschiedene Alternativen, die alle mit PHP funktionieren würden. Aber, wie sich herausgestellt hat, ist es noch viel viel einfacher. PHP selbst hat bereits einen einfachen Webserver an Board. Laut Dokumentation ist der zwar nicht für den produktiven Einsatz gedacht, für unsere simplen eingebetteten Systeme kommt er aber gerade recht.

Alles, was man tun muss, ist in Buildroot folgende Optionen aktivieren:

  • Target Packages –> Interpreter languages and scripting –> php
  • Target Packages –> Interpreter languages and scripting –> php –> CLI interface

Der automatisch vorausgewählte Eintrag Target Packages –> Interpreter languages and scripting –> php –> CGI interface kann hingegen abgewählt werden. Es sei dann man will einen Webserver vorschalten, der PHP nur über den alten CGI-Standard aufrufen kann.

Hat man dann z.B. im Verzeichnis /srv/www ein paar PHP-Dateien liegen, kann man den PHP-Webserver wie folgt starten:

$ php -t /srv/www -S 0.0.0.0:80

Die entscheidende Option hier ist -S 0.0.0.0:80, durch die der Webserver auf allen Netzwerkinterfaces auf Port 80 lauscht. Will man aus Sicherheitsgründen den Webserver so einschränken, dass nur Programme auf dem Raspberry Pi ihn aufrufen können, kann man stattdessen einfach -S 127.0.0.1:80 schreiben. Dadurch wird der externe Zugriff verhindert, da der Server nur noch auf dem Loopback Interface lauscht.


Anbei eine Musterkonfiguration für PHP, damit der Server auch die Kurzschreibweise <? … ?> anstelle von <?php … ?> versteht, sowie zwei Beispielskripte. Die Inhalte des ZIP-Files gehören in das Buildroot-Overlay-Verzeichnis.

vorlage-php

 

PHP auf dem Raspberry Pi, genial einfach