MySQLdump空文件使用PHP而不是命令行?

时间:2014-03-02 03:47:48

标签: php mysql mysqldump

我正在玩mysql的备份脚本。这个的变化用于工作,但我从没有看过它自php4。它返回一个空文件。奇怪的是,如果我转到命令行并使用EXACT相同的命令,我会得到我期待的文件。

我在互联网上捅了一下,找不到任何东西......想法?

错误代码?

$db_host='localhost';
$db_user='root';
$db_pass='root';
$db_name='gakkou';
$dir='backups';
$file_list=scandir($dir);
if(count($file_list)>10) unlink($dir.'/'.$file_list[2]); //delete old file
$prefix=date("YmdHi").'_';
$command='mysqldump -u'.$db_user.' --password="'.$db_pass.'" --databases '.$db_name.' | gzip > '.$dir.'/'.$prefix.'_backup.sql.gzip';
exec($command,$output,$return_val);

这非常有效:mysqldump -uroot -proot -hlocalhost gakkou > /webdocs/gakkou/backups/mysql_backup.sql它与php文件执行的命令完全相同(文件名除外)。

编辑:为感兴趣的人更新了工作代码。事实证明这是两个独立的问题。使用MAMP,我需要指定路径/Applications/MAMP/Library/bin/mysqldump。然后在生产服务器上,疯狂的密码搞砸了作品。

1 个答案:

答案 0 :(得分:2)

行。最终搞清楚了。我的超级愚蠢的密码搞乱了mysqldump,因为它有一个"&"在里面。没有必要更改密码。我只是将密码括在括号中:--password="'.$db_pass.'"现在它按预期工作。浪费了这么多时间...... @MarcB,非常感谢你的帮助。我不知道如何返回错误,这绝对是最大的障碍。