我正在尝试使用一个小的PHP脚本执行mysqldump来导出所有数据库,但每次执行代码时我都会遇到一个空文件。
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$filename='database_backup_'.date('G_a_m_d_y').'.sql';
$result=exec('mysqldump -p123456 -uroot --all-databases --single-transaction > C:\\tmp' . $filename,$output);
if($output==''){
echo("Success");
}
else {
var_dump($output);
}
?>
我试过print_r
$output
但显然即使我的转储失败也是空的。我用mysqldump.exe手动执行了相同的mysqldump,效果很好。
与passthru的建议做了诀窍:
passthru('C:\wamp\bin\mysql\mysql5.5.24\bin\mysqldump.exe -uroot -p123456 --all-databases --single-transaction > C:\\tmp' . $filename);
答案 0 :(得分:1)
要查看问题所在,请将原始语句更改为以下内容:
$result=exec('mysqldump -p123456 -uroot --all-databases --single-transaction > C:\\tmp' . $filename,$output, $returnVar);
这里的不同之处在于我添加了$returnVar
作为exec()
函数的第三个参数。此参数将返回已执行命令的状态。
现在尝试print_r($returnVar)
并查看其内容。