Beenden Sie Debian aus dem PHP-Skript

0

Ich versuche mein RaspberryPi mit Raspbian von einem PHP-Skript auf einem LightTPD-Webserver herunterzufahren. shell_exec("sudo /sbin/shutdown -h now 2>&1");

Ich fügte hinzu lighttpd ALL=(ALL) NOPASSWD: /sbin/shutdown zu meiner / etc / sudoers Datei und überprüfte das Defaults !requiretty gesetzt ist.

Beim Ausführen des Skripts wird immer noch "sudo: no tty present und no askpass program specified" angezeigt.

Kann mir bitte jemand helfen? Vielen Dank!

frsc
quelle
Ich denke, Sie können das wollen shell_exec Funktion statt exec da dies ein Shell-Befehl ist (ich denke, so funktioniert es). Ich bin mir nicht zu 100% sicher (daher der Kommentar), kann aber einen Versuch wert sein.
nerdwaller
Ausgabeumleitung ( 2>&1 ) erfordert eine Muschel; Versuchen Sie, das aus dem Befehl zu entfernen, und prüfen Sie, ob Sie ein anderes Ergebnis erhalten.
Aaron Miller
Danke für deine Kommentare. Eigentlich habe ich shell_exec schon probiert. Ich habe gerade den falschen Befehl auf meine Frage kopiert. Und exec ("sudo / sbin / shutdown -h now"); funktioniert auch nicht.
frsc
Sind Sie sicher, dass lighttpd als Benutzer lighttpd ausgeführt wird? In einem PHP-Skript, echo `whoami`; Es könnte stattdessen www-data oder http sein
WJDev

Antworten:

1

Lighttpd wird möglicherweise nicht als Benutzer ausgeführt lighttpd.

Schreiben Sie in ein PHP-Skript Folgendes, um herauszufinden, mit welchem ​​Benutzer es ausgeführt wird:

echo shell_exec('whoami');

Es könnte sein www-data oder http stattdessen.

WJDev
quelle
Vielen Dank an ElanMan für Ihren Hinweis. Der richtige User war ja www-data und nicht lighttpd wie ich es woanders gelesen habe. Jetzt funktioniert es wie erwartet.
frsc