Um meinen Slow Movie Player via PHP zu “steuern” (aka den Service ein- und auszuschalten erst mal nur), bedurfte es eigentlich nur einer Änderung: Ich musste dem entsprechenden User (hier: www-data) das Recht geben, den Service per systemctl zu starten und zu stoppen: $ sudo visudo
, dann
1 |
www-data ALL=NOPASSWD:/usr/bin/systemctl start slowmovie,/usr/bin/systemctl stop slowmovie |
Achtung: Die Zeile muss an das Ende der Datei!
Dann ist das ziemlich einfach:
1 2 3 4 5 6 7 8 |
// einschalten: <?php echo shell_exec("sudo /usr/bin/systemctl start slowmovie 2>&1");?> // ausschalten entsprechend: <?php echo shell_exec("sudo /usr/bin/systemctl stop slowmovie 2>&1");?> // Den Status abzufragen geht ohne sudo: <?php echo shell_exec("systemctl is-active slowmovie");?> |
Achtung: systemctl ist hier in /usr/bin, nicht in /bin!
Zwischendurch habe ich zum Debuggen
- den User www-data zu sudo hinzugefügt:
sudo usermod -aG sudo www-data
(und dann aber wieder entfernt:sudo gpasswd --delete www-data sudo
) - dem User www-data eine Shell (und ein Home-Verzeichnis und ein Passwort) zugewiesen, damit er sich einloggen kann (und dann wieder entfernt)
PS, zum Einsatz kommt PHP 8.2, mittels Umweg über sury.org.