{"id":362,"date":"2017-06-19T22:40:44","date_gmt":"2017-06-19T20:40:44","guid":{"rendered":"https:\/\/www.pingu-mobil.de\/iot\/?p=362"},"modified":"2021-05-14T10:07:50","modified_gmt":"2021-05-14T08:07:50","slug":"php-auf-dem-raspberry-pi-genial-einfach","status":"publish","type":"post","link":"https:\/\/www.iot-embedded.de\/iot-2017\/technik\/php-auf-dem-raspberry-pi-genial-einfach\/","title":{"rendered":"PHP auf dem Raspberry Pi, genial einfach"},"content":{"rendered":"<p>Manchmal liegt das gute so nah und man sieht es nicht. Tats\u00e4chlich 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\u00fcr PHP ja einen Webserver, der die HTTP-Kommunikation mit dem Browser \u00fcbernimmt und bei jeder HTTP-Anfrage dann die PHP-Skripts ausf\u00fchrt. Hierf\u00fcr bietet Buildroot mindestens vier verschiedene Alternativen, die alle mit PHP funktionieren w\u00fcrden. 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\u00fcr den produktiven Einsatz gedacht, f\u00fcr unsere simplen eingebetteten Systeme kommt er aber gerade recht.<\/p>\n<p><a href=\"http:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-364\" src=\"https:\/\/www.pingu-mobil.de\/iot\/wp-content\/uploads\/2017\/06\/php1-300x187.png\" alt=\"\" width=\"300\" height=\"187\" srcset=\"https:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php1-300x187.png 300w, https:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php1.png 630w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-365\" src=\"https:\/\/www.pingu-mobil.de\/iot\/wp-content\/uploads\/2017\/06\/php2-300x187.png\" alt=\"\" width=\"300\" height=\"187\" srcset=\"https:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php2-300x187.png 300w, https:\/\/www.iot-embedded.de\/iot-2017\/wp-content\/uploads\/sites\/2\/2017\/06\/php2.png 630w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Alles, was man tun muss, ist in Buildroot folgende Optionen aktivieren:<\/p>\n<ul>\n<li><em>Target Packages &#8211;&gt; Interpreter languages and scripting &#8211;&gt; php<\/em><\/li>\n<li><em>Target Packages &#8211;&gt; Interpreter languages and scripting &#8211;&gt; php &#8211;&gt; CLI interface<\/em><\/li>\n<\/ul>\n<p>Der automatisch vorausgew\u00e4hlte Eintrag <em>Target Packages &#8211;&gt; Interpreter languages and scripting &#8211;&gt; php &#8211;&gt; CGI interface<\/em> kann hingegen abgew\u00e4hlt werden. Es sei dann man will einen Webserver vorschalten, der PHP nur \u00fcber den alten CGI-Standard aufrufen kann.<\/p>\n<p>Hat man dann z.B. im Verzeichnis \/srv\/www ein paar PHP-Dateien liegen, kann man den PHP-Webserver wie folgt starten:<\/p>\n<pre>$ php -t \/srv\/www -S 0.0.0.0:80<\/pre>\n<p>Die entscheidende Option hier ist <em>-S 0.0.0.0:80<\/em>, durch die der Webserver auf allen Netzwerkinterfaces auf Port 80 lauscht. Will man aus Sicherheitsgr\u00fcnden den Webserver so einschr\u00e4nken, dass nur Programme auf dem Raspberry Pi ihn aufrufen k\u00f6nnen, kann man stattdessen einfach <em>-S 127.0.0.1:80<\/em> schreiben. Dadurch wird der externe Zugriff verhindert, da der Server nur noch auf dem Loopback Interface lauscht.<\/p>\n<hr \/>\n<p>Anbei eine Musterkonfiguration f\u00fcr PHP, damit der Server auch die Kurzschreibweise &lt;? &#8230; ?&gt; anstelle von &lt;?php &#8230; ?&gt; versteht, sowie zwei Beispielskripte. Die Inhalte des ZIP-Files geh\u00f6ren in das Buildroot-Overlay-Verzeichnis.<\/p>\n<p><a href=\"https:\/\/www.pingu-mobil.de\/iot\/wp-content\/uploads\/2017\/06\/vorlage-php.zip\">vorlage-php<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal liegt das gute so nah und man sieht es nicht. Tats\u00e4chlich 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\u00fcr PHP ja einen<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/362"}],"collection":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/comments?post=362"}],"version-history":[{"count":1,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/362\/revisions"}],"predecessor-version":[{"id":573,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/362\/revisions\/573"}],"wp:attachment":[{"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/media?parent=362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/categories?post=362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/tags?post=362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}