Shellscript als root über PHP ausführen?

3_16

Grünschnabel
Hi, ich habe mir ein simples Shellscript geschrieben um einen Gameserver zu starten.
Das funktioniert soweit auch wenn ich es über Putty als root ausführe.

Kann ich das auch irgendwie per PHP Script ausführen, so dass auch andere Admins
(denen ich nicht unbedingt root geben möchte) dieses über ein (PW geschütztes)
PHP-Script ausführen können?
 
Du kannst das, indem du die Mittel deines Betriebssystems nutzt, etwas unter einer anderen Benutzerkennung auszuführen. Das hat nichts mit PHP zu tun.
 
Also halbwegs funktioniert es jetzt mittels "shell_exec('sudo -u root /pfad/zum/programm')"

Das funktioniert aber nur bei Programmen, die im Hintergrund gestartet werden.

Wenn ich das mit einem Programm mache, das ständigen Output hat, dann hängt auch
das PHP-Script fest. Wenn ich im Browser auf Stop drücke läuft zwar das Programm
wegen "nohup" trotzdem weiter, aber ich will ja nicht jedesmal manuell auf Stop drücken.
Sobald der Befehl ausgeführt wurde möchte ich nämlich auf eine andere Seite redirecten.

Gibt es eine PHP-Funktion ähnlich wie shell_exec() , die aber nicht auf Output wartet,
sondern einfach nur den Befehl ausführt?
 
Was genau willst Du denn ausfuehren?
Weiterhin kannst Du ja jedes Programm mit & im Hintergrund starten, und mit > /dev/null die Ausgabe in's Jenseits schicken.
 
Ich möchte ein Java-Programm ausführen.

Normalerweise starte ich das so: java -jar programm.jar

Und habe dann halt ständigen Output in der Konsole (Status- / Fehlermeldungen des Programms)

Mit nohup oder > /dev/null habe ich zwar keinen sichtbaren Output, aber das Programm
läuft halt im Vordergrund und shell_exec() ist erst zuende ausgeführt wenn das Programm
wieder beendet wird.

Also bräuchte ich eine Funktion (falls es die gibt) , die das gleiche macht wie shell_exec()
aber nicht auf eine "Rückmeldung" wartet, sondern eben nur den Befehl einmal
ausführt und dann direkt der Rest des PHP-Scripts (der redirect) ausgeführt wird.
 
Probier's doch mal mit dem von mir oben erwaehnten & hinter dem Aufruf, damit schickst Du ein Programm in den Hintergrund, sodass die Shell (und ich denk mal auch PHP) nicht darauf wartet, dass es beendet wird.
 
java -jar programm.jar &

Meinst du das so?

Das funktioniert leider auch nicht, das Programm wird zwar gestartet,
aber das PHP Script bleibt trotzdem an dieser Stelle hängen.
 
Ja, so meinte ich das.

Hmm, da Dir auch das nicht hilft weiss ich im Moment erstmal nicht weiter.
Naja, ist ja auch schon wieder spaet. Aber vielleicht faellt mir ja noch was ein.
 
Zurück