如何使用php脚本导出完整的mysql数据库。。。?使用';mysqldump';

如何使用php脚本导出完整的mysql数据库。。。?使用';mysqldump';,php,mysql,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(),但也得到了一个空白文件。 但在壳牌,它已经成功地做到了

我正在使用此命令备份完整的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()
,但也得到了一个空白文件。 但在壳牌,它已经成功地做到了。
这段代码有什么问题。

你能做的最好的事情就是检查出了什么问题。您甚至可能希望在PHP之外进行检查,以了解您正在做什么。因此,回显您的$command,并查看它,看看它是否正确。然后在命令行上使用它,看看是否可以让它工作

可能的注意事项:

  • 您的密码中是否有任何“奇怪”字符(如&)?你可能需要逃离他们
  • mysqldump命令可用吗?(它是在您的路径中,还是在您运行此命令的目录中
  • 是否允许您执行任何系统/执行命令
  • 是否允许运行php代码(apache?)的用户执行此命令
  • 是否允许运行此代码的用户在此目录中写入
要测试当前命令,您可能需要执行以下操作: -将
系统
命令替换为echo:
echo$命令;
-运行脚本并复制您在那里看到的命令。 -打开终端。(开始->运行->命令) -转到脚本所在/运行的目录。 -粘贴/键入命令。 -检查你的结果

我不知道当您没有密码,但仍然提供-p选项时会发生什么情况。它可能会尝试要求输入密码,因为您已表示希望输入密码,但未提供密码。我不确定这一点,这就是您可能希望检查密码的原因。(@wimvds在评论中确认:如果您提供了-p而没有密码,您将得到一个“密码:”对话框。)


在命令行中,您可以检查需要键入什么命令才能使mysqldump正常工作。如果没有问题,请确保您的脚本实际发出了该命令。然后再次使用脚本进行测试。

您可以做的最好的事情是检查出了什么问题。您甚至可能希望在PHP之外进行检查,以查看您正在执行的操作。因此,回显您的$co然后在命令行上使用它,看看它是否能正常工作

可能的注意事项:

  • 您的密码中是否有任何“奇怪”字符(如&)?您可能需要对其进行转义
  • mysqldump命令可用吗?(它是在您的路径中,还是在运行此命令的目录中
  • 是否允许您执行任何系统/执行命令
  • 是否允许运行php代码(apache?)的用户执行此命令
  • 是否允许运行此代码的用户在此目录中写入
要测试当前命令,您可能需要执行以下操作: -将
系统
命令替换为echo:
echo$命令;
-运行脚本并复制您在那里看到的命令。 -打开终端。(开始->运行->命令) -转到脚本所在/运行的目录。 -粘贴/键入命令。 -检查你的结果

我不知道当您没有密码,但仍然提供-p选项时会发生什么情况。它可能会尝试要求输入密码,因为您已表示希望输入密码,但未提供密码。我不确定这一点,这就是您可能希望检查密码的原因。(@wimvds在评论中确认:如果您提供了-p而没有密码,您将得到一个“密码:”对话框。)



在命令行中,您可以检查需要键入什么命令才能使mysqldump正常工作。如果没有问题,请确保您的脚本实际发出了该命令。然后再次使用脚本进行测试。

尝试添加mysqldump的完整路径。您没有检查
系统的返回值。
。您应该这样做。因为您值得这么做。您是不是你得到的是空白文件。它在哪里?@shakti我确定我得到的是空白文件…并且它位于根目录中。@nikc wt我应该返回值o还是1。尝试将完整路径添加到mysqldump。你没有检查
系统
的返回值。你应该这样做。因为你值得。你确定得到的是空白吗文件。它在哪里?@shakti我确定我得到的是一个空白文件…它位于根目录中。@nikc wt我应该返回值o或1。我没有任何密码。$username='root',$password='',$hostname='localhost'。我如何使用windows上的xampp检查本地服务器上是否允许使用system/exec命令?我已经添加了d如果您没有密码并且为-p开关提供了一个空密码,那么mysqldump仍将要求输入密码,因此请删除-p或使用有效密码…检查并感谢。为清楚起见,在答案中添加了您的注释:)我没有任何密码。$username='root',$password='',$hostname='localhost'。如何使用windows上的xampp检查本地服务器上是否允许使用system/exec命令..?我已将此添加到回答中如果您没有密码,并且为-p开关提供空密码,则mysqldump仍将要求输入密码,因此r删除-p或使用有效密码…检查并感谢。为清晰起见,在答案中添加了您的注释:)