0

我正在尝试执行 mysqldump 以使用一个小的 PHP 脚本导出所有数据库,但是每次执行代码时都会创建一个空文件。

<?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);
4

1 回答 1

1

要查看问题所在,请将原始语句更改为以下内容:

$result=exec('mysqldump -p123456 -uroot --all-databases --single-transaction > C:\\tmp' . $filename,$output, $returnVar);

这里的区别是我$returnVar作为第三个参数添加到exec()函数中。该参数将返回执行命令的状态。

现在试着print_r($returnVar)看看它说了什么。

于 2013-04-14T18:04:15.293 回答