在 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()
函数恢复默认的错误处理函数。