mysqldump没有通过PHP执行

时间:2012-03-28 12:47:57

标签: php mysql linux exec mysqldump

我正在使用php exec函数来尝试备份数据库,但它似乎没有工作。我尝试了不同的变体:

$dbuser = "root";
$dbpwd = "somepass";
$dbhost = "localhost";
$db = "somedb";
$dir = "/var/www/backup/";
$filename = $db.".sql";

exec('/usr/bin/mysqldump -u '.$dbuser.' -p'.$dbpwd.' -h '.$dbhost.' '.$db.' > '.$dir.$filename);

这可以通过以root身份登录的SSH运行。 -p似乎不适用于空间,所以当我拿走它时它通过SSH工作。当我在PHP中运行来自exec的whoami时,我得到了apache。这会是问题吗?如果是这样,我该如何解决?

这是一个linux盒子。我没有在PHP脚本中得到任何错误(在top中设置display_errors以确定)并且exec命令没有回应。

任何帮助都将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

一个丑陋的解决方案:创建一个只能读取内容的mysql用户(不更新,删除等功能),不需要密码,只能从localhost连接。所以你不需要-p param。

答案 1 :(得分:0)

如果它以root身份登录而不是作为另一个用户登录,并且您确定命令中没有任何不同(完全相同的用户,传递等),最可能的问题是权限。在这种情况下,它是存储文件的目录。