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