我正在研究 mysql 的备份脚本。它的一个变体曾经可以工作,但自从 php4 以来我就没有看过它了。它返回一个空文件。奇怪的是,如果我进入命令行并使用完全相同的命令,我会得到我期望的文件。
我在互联网上查了一下,找不到任何东西……有什么想法吗?
代码不好?
$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
。然后在生产服务器上,疯狂的密码搞砸了工作。
好的。终于弄清楚了。我超级愚蠢的密码弄乱了 mysqldump,因为它里面有一个“&”。不必更改密码。我只是将密码括在括号中:--password="'.$db_pass.'"
现在它按预期工作了。浪费了很多时间......@MarcB,非常感谢你的帮助。不知道如何返回错误,这绝对是最大的障碍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)