Standardfehlerstrom nach Exec() in PHP abrufen
Problem:
Sie' Sie führen einen Befehl erneut mit der Funktion exec() von PHP aus und möchten potenzielle Fehlermeldungen erfassen, die in den Standardfehler geschrieben werden stream.
Lösung:
PHP bietet einen umfassenderen Ansatz zur Steuerung und Erfassung von Standardausgabe- und Fehlerströmen mit proc_open.
Anleitung:
$descriptorspec = [ 0 => ["pipe", "r"], // stdin 1 => ["pipe", "w"], // stdout 2 => ["pipe", "w"], // stderr ];
$process = proc_open($command, $descriptorspec, $pipes, dirname(__FILE__), null);
$stderr = stream_get_contents($pipes[2]);
Beispiel:
Betrachten Sie das folgende Skript test.sh:
#!/bin/bash echo 'this is on stdout'; echo 'this is on stdout too'; echo 'this is on stderr' >&2; echo 'this is on stderr too' >&2;
In einem PHP-Skript: Wir können test.sh ausführen und stdout und erfassen stderr:
$descriptorspec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => ["pipe", "w"]]; $process = proc_open('./test.sh', $descriptorspec, $pipes); $stdout = stream_get_contents($pipes[1]); $stderr = stream_get_contents($pipes[2]); echo "stdout: $stdout"; echo "stderr: $stderr";
Ausgabe:
stdout: this is on stdout this is on stdout too stderr: this is on stderr this is on stderr too
Das obige ist der detaillierte Inhalt vonWie kann ich die Standardfehlerausgabe von „exec()' in PHP erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!