在 PHP 中,exec()
函數可以用于執行外部命令
2>&1
將錯誤輸出重定向到標準輸出:$output = [];
$return_var = 0;
exec('your_command 2>&1', $output, $return_var);
if ($return_var !== 0) {
// 處理錯誤信息
echo "Error: " . implode("\n", $output);
} else {
// 處理正常輸出
echo implode("\n", $output);
}
在這個示例中,your_command
是你要執行的外部命令。2>&1
表示將錯誤輸出(文件描述符 2)重定向到標準輸出(文件描述符 1)。$output
數組將包含所有命令的輸出,$return_var
變量將包含命令的返回值。如果 $return_var
不等于 0,說明命令執行失敗,你可以使用 $output
數組中的錯誤信息進行處理。
set_error_handler()
自定義錯誤處理函數:function custom_error_handler($errno, $errstr, $errfile, $errline) {
// 處理錯誤信息
echo "Error: [$errno] $errstr on line $errline in $errfile";
}
set_error_handler("custom_error_handler");
// 調用 exec() 函數
exec('your_command 2>&1', $output, $return_var);
// 恢復默認錯誤處理函數
restore_error_handler();
if ($return_var !== 0) {
// 如果需要,可以使用 custom_error_handler() 輸出錯誤信息
} else {
// 處理正常輸出
echo implode("\n", $output);
}
在這個示例中,我們定義了一個名為 custom_error_handler
的自定義錯誤處理函數,并使用 set_error_handler()
函數將其設置為當前的錯誤處理函數。然后,我們調用 exec()
函數執行外部命令。如果命令執行失敗,$return_var
將不等于 0,你可以根據需要使用 custom_error_handler()
函數輸出錯誤信息。最后,我們使用 restore_error_handler()
函數恢復默認的錯誤處理函數。