template
Index :: PHP/MySQL :: Webserver: Prozess öffnen/schließen
Mit dieser Funktion können webserver-lokale Programme/Prozesse gestartet werden; auch solche, die ausserhalb des Webpfades liegen:
int popen(string command, string mode)
- In command steht die komplette Anweisung (d.h. Programmname und eventuelle Parameter) wie man sie auf einer Kommandozeile eingeben würde.
- mode gibt den Modus an. Erlaubt ist hier r (nur lesen) oder w (nur schreiben).
- Das gelieferte Handle kann von den Funktionen feof(), fgets(), fgetss() und fputs() genutzt werden.
Im Fehlerfall wird false zurückgegeben.
Es ist darauf zu achten, den geöffneten Prozess mit pclose() wieder zu schließen.
Bei länger laufenden Prozessen muss evtl. die Zeitlimitierung - i.d.R. 30 Sekunden - des Skripts mittels set_time_limit(0) abgeschaltet werden.
Ausgaben, die an die Konsole gesendet werden, setzen einen Teletype-Font voraus und enthalten (zur Spaltenformatierung) oft Füll-Blanks. Um eine getreue Darstellung in HTML zu erreichen, sollte PHP die gelesenen Daten entweder in einem <PRE>-Block oder einer <TEXTAREA> ausgeben.
Siehe auch: escapeshellarg(), escapeshellcmd(), exec(), passthru(), proc_open(), shell_exec() und system().
Beispiel unter Linux:
Verzeichnisinhalt auflisten
if ($ph = popen("/bin/ls", "r")) {
while(!feof($ph)) echo htmlentities(fgets($ph, 300)), "<br>";
pclose($ph);
}
Shellskript ausführen
if ($ph = popen("blabla.sh", "r")) {
while(!feof($ph)) echo htmlentities(fgets($ph, 300)), "<br>";
pclose($ph);
}
Beispiel unter Windows:
Verzeichnisinhalt auflisten
if ($ph = popen("dir /a /w", "r")) {
while(!feof($ph)) echo htmlentities(fgets($ph, 300)), "<br>";
pclose($ph);
}
template |
|