Dapatkan Strim Ralat Standard selepas Exec() dalam PHP
Masalah:
Anda' melaksanakan semula arahan menggunakan fungsi exec() PHP dan ingin menangkap mesej ralat berpotensi yang ditulis kepada ralat standard strim.
Penyelesaian:
PHP menyediakan pendekatan yang lebih komprehensif untuk mengawal dan menangkap kedua-dua output standard dan aliran ralat menggunakan proc_open.
Cara Menggunakan:
$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]);
Contoh:
Pertimbangkan test.sh skrip berikut:
#!/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;
Dalam skrip PHP, kita boleh menjalankan test.sh dan menangkap stdout dan 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";
Output:
stdout: this is on stdout this is on stdout too stderr: this is on stderr this is on stderr too
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap Output Ralat Standard daripada `exec()` dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!