如何用php脚本导出完整的mysql数据库......?使用'mysqldump'时出现问题

时间:2011-01-20 06:14:07

标签: php mysql

我正在使用此命令备份我的完整mysql数据库..

$backupFile = $dbname . date("Y-m-d-H-i-s") . '.sql';
$command = "mysqldump -h$hostname -u$username -p$password $dbname > $backupFile";
system($command);

我收到空白文件。 我在Windows上使用XAMMP。 我已经使用了exec()但也获得了空白文件。 但是在shell上它已经成功完成了。 这段代码有什么不对。

1 个答案:

答案 0 :(得分:1)

你能做的最好的事情就是检查出了什么问题。你甚至可能想在PHP之外检查一下,看看你在做什么。所以回显你的$命令,看看它,看看它是否正确。然后在命令行上使用它,看看你是否可以使它工作。

可能的关注点:

  • 您的密码中是否有“奇怪”字符(如&)?你可能需要逃避它们
  • mysqldump命令是否可用? (它是在你的PATH中,还是在你从
  • 运行它的目录中)
  • 您是否可以执行任何系统/ exec命令?
  • 运行php代码的用户(apache?)是否允许执行此命令?
  • 是否允许运行此代码的用户在此目录中写入?

要测试当前命令,您可能希望这样做:   - 使用echo替换system命令:echo $command;   - 运行脚本并复制您在那里看到的命令。   - 打开终端。 (开始 - > RUN-> “中CMD”)   - 转到脚本运行的目录。   - 粘贴/输入命令。   - 检查你的结果。

我不知道当你没有密码时会发生什么,但仍然提供-p选项。无论如何,它可能会尝试并要求输入密码,因为您已经表明要输入密码,但尚未提供密码。我肯定不知道,这就是为什么你可能要检查它。 (@ wimvds在评论中确认:如果你提供-p而没有密码,你会得到一个“密码:”对话框。)

在命令行中,您可以检查需要键入的命令以使mysqldump工作。如果没关系,那么请确保您的脚本实际发出该命令。然后再用脚本测试。