Mit shell_exec den omxplayer starten (raspberry pi)?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du könntest dich per PHP als "pi" user anmelden und deinenexec Befehl ausführen.

Dafür gibt es die PHP internen funktionen ssh2 :

http://php.net/manual/de/book.ssh2.php

sollte das dein php nicht haben, kannst du eine externe Bibliothek einfügen die das gleiche macht , die nennt sich PHPSECLIB :

https://github.com/phpseclib/phpseclib

Woher ich das weiß:Berufserfahrung – Software-Entwickler

zocker160 
Beitragsersteller
 22.12.2016, 15:09

Danke für die Antwort, genau das habe ich gesucht, es hat auf Anhieb funktioniert. Zu beachten ist, dass man bestimmte Pakete nachinstallieren muss, in meinem Fall war das libssh-dev und libssh2-php.

Nochmals DANKE!

0


...da der Webserver ja bekanntlich als www-data läuft, der raspberry sich
aber als Nutzer pi anmeldet und somit kann ich als www-data kein
Programm mit GUI auf dem Bildschirm anzeigen lassen...

www-data in pi Gruppe stecken und die richtigen file permission setzen, dann klappts auch mit der GUI bzw shell_exec()

#add user www-data to group pi 
usermod -a -G pi www-data

#change file permission
chmod 775 srcipt.sh

Du könntest es über einen kleinen Umweg machen, du erstellst eine Datei, deren Inhalt einfach "0" ist, wenn du dein Script starten willst, dann änderst du den Inhalt dieser Datei via PHP auf "1" (file_put_contents()).

Anschließend legst du einen minütlichen Cronjob an, der ein Shellscript ausführt (unter dem passenden User) und dieses Script liest wiederum die besagte Datei aus und wenn "1" drin steht wird dein Programm gestartet (falls es noch nicht läuft) und bei "0" beendet (falls es läuft). 

So habe ich das jedenfalls vor einiger Zeit mal gemacht um eine bestimmte Software auf einem Server einfach per Webinterface starten / beenden zu können.


zocker160 
Beitragsersteller
 22.12.2016, 15:07

Danke für deine Antwort!

Deine vorgeschlagene Methode funktioniert gut, leider reicht es nicht, wenn die Textdatei nur einmal pro Minute ausgelesen wird. Wenn ich den Cronjob häufiger laufen lassen will, dann bin ich auf Probleme gestoßen, es war nicht so zuverlässig wie gewünscht.

leider kann ich auch nur einen Stern vergeben :-/

0