popen
(PHP 4, PHP 5, PHP 7, PHP 8)
popen — Öffnet einen Dateizeiger für einen Prozess
Beschreibung
$command
, string $mode
): resource|false
Öffnet eine Pipe zu einem Prozess durch Forken des Befehls, der durch
command
angegeben wurde.
Parameter-Liste
-
command
-
Das Kommando
-
mode
-
Der Modus. Entweder
'r'
zum Lesen, oder'w'
zum Schreiben.Unter Windows ist popen() standardmäßig auf den Textmodus eingestellt, d. h. alle in die Pipe geschriebenen oder aus ihr gelesenen
\n
-Zeichen werden in\r\n
übersetzt. Wenn dies nicht gewünscht ist, kann der Binärmodus erzwungen werden, indemmode
auf'rb'
bzw.'wb'
gesetzt wird.
Rückgabewerte
Gibt einen Dateizeiger zurück, der identisch ist mit dem, der bei der Funktion fopen() zurückgegeben wird, außer dass dieser nur in eine Richtung funktioniert (entweder lesend oder schreibend) und mit der Funktion pclose() geschlossen werden muss. Dieser Zeiger kann mit den Funktionen fgets(), fgetss() und fwrite() benutzt werden. Ist der Modus 'r', ist der zurückgegebene Dateizeiger das STDOUT des Kommandos; ist der Modus 'w', ist der zurückgegebene Dateizeiger das STDIN des Kommandos.
Wenn ein Fehler auftritt, wird false
zurückgegeben.
Beispiele
Beispiel #1 popen()-Beispiel
<?php
$handle = popen("/bin/ls", "r");
?>
Wenn das auszuführende Kommando nicht gefunden werden konnte, wird eine gültige Ressource zurückgegeben. Das mag seltsam erscheinen, ist aber sinnvoll; es ermöglicht Ihnen, auf von der Konsole zurückgegebene Fehlermeldungen zuzugreifen:
Beispiel #2 popen()-Beispiel
<?php
error_reporting(E_ALL);
/* Umleitung hinzufügen, sodass wir stderr erhalten können */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
Anmerkungen
Hinweis:
Wenn Sie bidirektionale Unterstützung wünschen, verwenden Sie proc_open().
Siehe auch
- pclose() - Schließt einen Prozess-Dateizeiger
- fopen() - Öffnet eine Datei oder URL
- proc_open() - Führt ein Kommando aus und öffnet Dateizeiger für die Ein- und Ausgabe