使用exec的php中的mysqldump返回空文件

时间:2016-01-08 06:22:28

标签: php mysql exec mysqldump

我已经找了几个人,他们设法解决了他们的问题,但遗憾的是我没有成功。我在Windows上使用wamp,我的php文件如下所示

<?php 
  include_once("config.php");
  $_user = "username";
  $_pass = "password";
  $_db = "dbname";
  $command = 'C:\wamp\bin\mysql\mysql5.6.17\bin\mysqldump -u '.$_user.' -p'.$_pass.' '.$_db.' > test.sql';
  exec($command);
  echo "<br />".$command;
?>

创建文件名test.sql,但它是0字节。我也尝试将mysqldump更改为mysqldump.exe但没有成功。在此之前,我试图通过不定义mysqldump的路径,在这种情况下,该过程从未用过结束。现在流程立即结束,但文件为空。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,因为找不到我找到的任何解决方案,所以我都拉着头发。

最后,我尝试从cmd运行命令(windows&#39;命令提示符),发现Windows无法找到MySQL命令的路径。

无论如何,长话短说,这里有什么对我有用,你可以摆脱mydsqldump命令的绝对路径:

  1. 按照 this page 上的说明将MySQL添加到Windows&#39;路径。
  2. 重新启动您的WAMP。如果您打开了cmd窗口,请将其关闭。
  3. 如果要测试新插入的路径,则为可选)通过搜索&#34; cmd&#34;打开cmd窗口。在Windows搜索中然后输入&#34; mysqldump&#34;没有引号。
    如果它返回如下的使用说明那么恭喜你,你的MySQL路径有效!
  4. 用法:mysqldump [OPTIONS]数据库[tables]
    或mysqldump [OPTIONS] - 数据库[OPTIONS] DB1 [DB2 DB3 ...]
    或mysqldump [选项] - 所有数据库[选项]
    有关更多选项,请使用mysqldump --help
    1. 在你的代码中,删除你的(C:\ wamp \ bin \ mysql \ mysql5.6.17 \ bin)mysqldump命令的绝对路径,只留下没有任何路径的mysqldump。以下是对我有用的:

      $command = 'mysqldump --opt --host=YOUR_HOST --password="YOUR_PASSWORD" --user=YOUR_DB_USER --databases YOUR_DB_NAME > PATH_TO_FILE/FILE_NAME.sql';
    2. 使用您自己的信息替换上面代码中的大写部分

    3. 再次运行您的代码。

      希望这或多或少有所帮助。