【问题标题】:mysqldump in php using exec returns empty filephp中的mysqldump使用exec返回空文件
【发布时间】:2016-01-08 06:22:28
【问题描述】:

我浏览了几篇帖子,人们设法解决了他们的问题,但不幸的是我没有成功。我在 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 的路径,在这种情况下,该过程永远不会结束。现在该过程立即结束,但文件为空。

【问题讨论】:

  • 你的文件夹有写权限吗?
  • 感谢您的回复。是的。我确实有权在此文件夹中写入文件。

标签: php mysql exec mysqldump


【解决方案1】:

我也遇到了同样的问题,因为我找到的解决方案都不适合我。

最后,我尝试从 cmd(Windows 的命令提示符)运行命令,发现 Windows 找不到该 MySQL 命令的路径。

无论如何,长话短说,这对我有用,您可以摆脱 mysqldump 命令的绝对路径:

  1. 按照 this page 上的说明将 MySQL 添加到 Windows 路径。
  2. 重新启动您的 WAMP。如果您打开了一个 cmd 窗口,也请关闭它。
  3. 如果您想测试新插入的路径,可选)通过在 Windows 搜索中搜索“cmd”打开一个 cmd 窗口,然后输入“mysqldump”,不带引号。
    如果返回如下使用说明 那么恭喜你,你的 MySQL 路径成功了!
用法:mysqldump [OPTIONS] 数据库 [tables]
或 mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
或 mysqldump [选项] --all-databases [选项]
如需更多选项,请使用 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 &gt; PATH_TO_FILE/FILE_NAME.sql';
  2. 将上面代码中的大写部分替换为您自己的信息

  3. 再次运行您的代码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多