在 PHP 中,popen()
函數(shù)用于打開(kāi)一個(gè)進(jìn)程文件指針,從而與進(jìn)程進(jìn)行交互。要處理錯(cuò)誤輸出,您可以將錯(cuò)誤輸出重定向到一個(gè)臨時(shí)文件,然后讀取該文件以獲取錯(cuò)誤信息。以下是一個(gè)示例:
function popen_error_output($command) {
// 創(chuàng)建一個(gè)臨時(shí)文件
$temp_file = tempnam(sys_get_temp_dir(), 'popen_error');
// 將錯(cuò)誤輸出重定向到臨時(shí)文件
$process = popen($command . " 2> " . $temp_file, 'r');
if (!$process) {
return false;
}
// 讀取錯(cuò)誤輸出并關(guān)閉進(jìn)程
$error_output = stream_get_contents($process);
pclose($process);
// 刪除臨時(shí)文件
unlink($temp_file);
return $error_output;
}
// 使用示例
$command = "your_command_here";
$error_output = popen_error_output($command);
if ($error_output) {
echo "Error output: " . $error_output;
} else {
echo "Command executed successfully.";
}
在這個(gè)示例中,我們定義了一個(gè)名為 popen_error_output
的函數(shù),該函數(shù)接受一個(gè)命令作為參數(shù)。我們使用 tempnam()
函數(shù)創(chuàng)建一個(gè)臨時(shí)文件,然后將錯(cuò)誤輸出重定向到該文件。接下來(lái),我們使用 stream_get_contents()
函數(shù)讀取錯(cuò)誤輸出,并使用 pclose()
函數(shù)關(guān)閉進(jìn)程。最后,我們刪除臨時(shí)文件并返回錯(cuò)誤輸出。
請(qǐng)注意,這個(gè)示例僅適用于處理錯(cuò)誤輸出。如果您還需要處理標(biāo)準(zhǔn)輸出,可以使用 pipe
選項(xiàng)將標(biāo)準(zhǔn)輸出重定向到一個(gè)臨時(shí)文件,然后使用 fread()
和 pclose()
函數(shù)讀取輸出。