mysqldump无法正常运行

时间:2010-05-17 15:05:30

标签: php backup xampp mysqldump

我用PHP编写了一些代码备份数据库。

这是我的代码:

exec("mysqldump --opt -h localhost -u root test > mydb.sql");

但是我的文件中有0字节(mydb.sql)。我也运行passthru(),system(),但它仍然是0字节。

我尝试使用命令。它有效。

我将最新的XAMPP用于我的localhost。

那么,我怎样才能让它正常工作?

5 个答案:

答案 0 :(得分:9)

可能是权限问题,或者您没有传递密码。要查看错误,请使用2>&1

将STDERR路由到STDOUT
exec("mysqldump --opt -h localhost -u root test > mydb.sql 2>&1", $output);
print_r($output);

这将显示您通常在命令行中看到的错误。

答案 1 :(得分:2)

很可能mysqldump不在PHP / Apache的路径中。这将导致shell在STDERR上吐出“未找到命令”错误,并且STDOUT上没有输出(您重定向到文件并以0长度结束)。

尝试添加mysqldump(c:\mysql\bin\mysqldump或其他)的完整路径,然后重试。

答案 2 :(得分:1)

你必须在-p选项后没有空格地传递密码,并且在-u

后直接输入用户名的密码

exec(“mysqldump --opt -h localhost -uUSER -pPASSWORD DBNAME> mydb.sql”);

我在共享主机上存在问题,原来我必须使用主机用户名和密码而不是数据库用户名和密码

答案 3 :(得分:0)

试试这个!

$username = "root";
$password = "";
$hostname = "localhost";
$dbname   = "test";

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($dbname . "_" .date("Y-m-d_H-i-s").".sql"));

$command = "C:\AppServ\MySQL\bin\mysqldump --add-drop-table --host=$hostname --   user=$username --password=$password ".$dbname;

system($command);

答案 4 :(得分:0)

exec()和system()等命令不适用于所有服务器,只有本地服务器和专用服务器,如果您托管服务器,则必须查看您的主机方案是否允许访问exec(命令)和system(如果你不允许雇用另一个计划。