Nachdem endlich ein einfacher Webbrowser auf unserem Raspberry Pi gestartet werden kann, fehlt nur noch ein Webserver. Ursprünglich war es geplant, die noch ausstehende Aufgabe über Node.js zu realisieren. Schlussendlich ergab sich allerdings eine Lösung, die wesentlich einfacher und dennoch für unsere Zwecke ausreichend ist. Unsere PHP-Dateien können ganz einfach durch das PHP-Package von Buildroot zum Laufen gebracht werden. Dieses Package hatten wir zuvor schon eingefügt und kompiliert. Allerdings mit dem CGI-Interface, anstelle des benötigten CLI-Interface. Wir erhofften uns, durch das nachträgliche Einfügen des CLI-Package, einen laufenden Webserver zu erhalten. Leider machte uns Buildroot an dieser Stelle einen Strich durch die Rechnung. 😉

Durch folgenden Befehl versuchten wir den Webserver zu starten:

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

Leider kam an dieser Stelle folgende (wenig aussagende) Fehlermeldung zurück:

php: command not found

Nach langen Überlegungen und unzähligen erstellten Images, kamen wir auf die Idee, ausschließlich PHP aus dem Cache von Buildroot zu entfernen. Ein komplettes (oft hilfreiches) „make clean“ würde allerdings wieder eine ganze Nacht in Anspruch nehmen. Durch folgenden Befehl und anschließendem neuen kompilieren, brachten wir den Webserver zum Laufen.:

make php-dirclean

Allerdings benötigte es viele Anläufe um auf diese (im Nachhinein) simple Lösung zu kommen. Immerhin wurde ein „make clean“ erfolgreich umgangen und so wahrscheinlich dennoch Stunden gespart. 😉 Geschickt wäre es natürlich wenn dieser Webserver im Hintergrund starten könnte. Durch folgenden Befehl konnten wir dies realisieren:

php -t /var/www/html -S 0.0.0.0:8080 &

Durch das „&“ wird der Befehl im Hintergrund ausgeführt. Allerdings scheint dies nicht mit einer Passwort-Abfrage durch sudo zu funktionieren. Daher entschieden wir uns für den höheren Port 8080 für den kein sudo benötigt wird. Nun sollte unsere PHP-Datei aufgerufen werden können:

qt-webkit-kiosk --uri 127.0.0.1:8080/SmartMirror.php

Leider bekamen wir nur einen weißen Bildschirm zu sehen. 🙁 Durch wget bekamen wir beim Versuch die Datei aufzurufen zwei Laufzeitfehler. Es scheint in der PHP-Datei auf nicht vorhandene Dateien referenziert zu werden. Ob dies die Ursache des Problems ist?

Trotz der Schwierigkeiten ist es uns heute gelungen ein Webserver auf unserer Firmware zum Laufen zu bringen. Leider konnten wir dennoch (noch) nicht unsere PHP-Dateien aufrufen. Auf einem Windows-PC mit einem Apache-Webserver scheint dies allerdings problemlos zu funktionieren…. Eine weitere Aufgabe, die noch getätigt werden muss, ist das automatische Starten des Webservers beim Booten des Raspberry Pi’s. Hierzu muss ein entsprechender Eintrag in der inittab-Datei vorgenommen werden. Schlussendlich soll nach dem Booten des Raspberry Pi’s die Oberfläche unseres SmartMirrors angezeigt werden. Über eine Konfigurationsoberfläche, die man beispielsweise mit einem Smartphone im gleichen Netzwerk erreicht, können dann Änderungen (Arbeitsplatz, Wohnort, Name etc…) vorgenommen werden.

 

SmartMirror: Einfache Realisierung mit PHP

Ein Kommentar zu „SmartMirror: Einfache Realisierung mit PHP

  • 26. Juni 2017 um 19:19 Uhr
    Permalink

    Das sudo-Problem kann durch den Parameter -c für sudo umgangen werden:

    $ sudo -c „mein komplizierter Befehl mit eigenen Optionen &“

    So kann man auch Dienste unter einem bestimmten User starten (gut für die /etc/inittab, wo ja alles erst mal unter dem root-User gestartet wird):

    $ sudo -u spezialuser -c „mein befehl“

    Zu der Meldung aus dem Screenshot: Permission Denied klingt mehr nach „Die Datei ist zwar vorhanden, mein User darf aber nicht darauf zugreifen“. Der Linux-Befehl dazu lautet „chmod“, da die Datei aber durch Buildroot in die Firmware kommt, ist hier eher Kapitel „3.11 Zugriffsrechte einzelner Dateien ändern“ aus dem Skript relevant.

Kommentare sind geschlossen.