我执行以下命令进行数据库备份:
$exec = exec("mysqldump --opt
--user=$database_user
--password=$database_pass
--host=$database_host
$database_name > $output_filename", $out, $status);
要检查我是否mysqldump
失败:
if ($status == 0) {
// OK
} else {
// Error
// How could I print the error message here ?
}
如果出现问题且mysqldump
失败,我怎么能收到错误消息?
答案 0 :(得分:2)
您可以使用proc_open(同样由Emil建议)。下面是一个如何实现你想要的更完整的例子。
$exec_command = "mysqldump --opt
--user=$database_user
--password=$database_pass
--host=$database_host
$database_name"
$descriptorspec = array(
0 => array("pipe", "r"), // stdin pipe
1 => array("file", $output_filename, "w"), // stdout to file
2 => array("pipe", "w") // stderr pipe
);
$proc = proc_open($exec_command, $descriptorspec, $pipes);
fwrite($pipes[0], $input); //writing to std_in
fclose($pipes[0]);
$err_string = stream_get_contents($pipes[2]); //reading from std_err
fclose($pipes[2]);
$return_val = proc_close($proc);
编辑:
更改输出以写入文件
答案 1 :(得分:1)
如果您想阅读stderr,则需要使用proc_open。手册中的示例可以帮助您。
答案 2 :(得分:0)
如果您使用的是shell_exec,请在命令后附加2>& 1,它会将STDERR重定向到STDOUT。