Google innerhalb der PHP Doku dochmal nach "exec" "execv" und "fork". Das sind zwar C stdlib Aufrufe, aber oft sind diese in PHP nachgebildet. Zumindest sollte man mit diesen Schlüsselwörtern die entsprechenden PHP calls finden.
Ausserdem: Das Aufrufen eines shellskriptes durch einen Webserver ist möglicherweise ein grosses Sicherheitsloch. Am Besten ist eine genaue Prüfung der übergebenen Parameter. Mindestens muss die Seite durch https/Basic Authentication geschützt werden. Am 26. Februar 2009 09:02 schrieb <[email protected]>: > Hallo LUG, > > bitte nicht steinigen, aber ich habe da mal einige Fragen zu > Shell-Skripten und PHP. Wem die Abkürzung PHP stört, kann vermutlich > auch Phyton oder Ruby einsetzen ;-). Nun aber los: > > Die Idee ist folgende: Einer Menge User soll ein Web-Interface zur > Verfügung gestellt werden. Dieses Interface beinhaltet eine Liste von > Shell-Scripten, die aufgerufen werden können (klick auf grünem Pfeil). > Es sollen Start- und Endzeit, ob das Programm läuft, ob es auf stdout > bzw stderr was geschrieben hat angezeigt werden sowie die Möglichkeit > des Abbruchs (klick auf rotes Kreuz) geben. Die Shell-Skripte sollen > im Hintergrund gestartet werden. > > Was funktioniert: Starten des Programmes, abbrechen des Programmes, > Startzeit des Programmes. > > Was nicht funktioniert: Das Programm im Hintergrund starten. > Ich starte das Skript per > > $command = 'cd ' . $programmpfad . ' && ' . 'nohup ./' . $programmname > . ' > ' . $logFile . ' 2> ' . $errorFile . ' & echo $!'; > > Auf der Shell sieht es ungefähr so aus: > > cd /mein/pfad/zum/programm && nohup ./programmname > run.log 2> > error.lug & echo $! > > Damit hätte ich auch die PID, über die ich kill ausführen kann. Nun > wartet aber trotzdem PHP bis das Programm im Hintergrund fertig ist > mit werkeln. Irgendwo ist das ja logisch, aber nicht gewünscht. Hat > jemand eine Idee? Also PHP soll das Skript starten und mir mitteilen: > Läuft. Das Skript soll werkeln. Wenn ich die PHP-Seite aktualisiere > soll mir irgendwann angezeigt werden: Läuft nicht mehr, erfolgreich > beendet oder Fehler (möglich über die Logfiles). > > Was auch nicht funktioniert: Zeitmessung > > Ich will wissen, wie lange das Programm im HG werkelte. Nutze ich > time, bekomme ich die PID von time (war auch interessant > herauszufinden, dass es einmal time als eigenständiges Programm und > einmal time als Bash-Befehl gibt). Hat jemand eine Idee wie ich ohne > time die Laufzeit bekomme? > > Natürlich bin ich auch für ganz andere Ideen offen. > > Vielen Dank für eure Mithilfe, > > Falk > > > > _______________________________________________ > Lug-dd maillist - [email protected] > https://ssl.schlittermann.de/mailman/listinfo/lug-dd > -- "Frauen sind wie Juwelen. Man muss sie mit Fassung tragen" Heinz Erhardt
_______________________________________________ Lug-dd maillist - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
