繁体   English   中英

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

[英]mysqldump in php using exec returns empty file

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

我也遇到了同样的问题,并且因为无法找到对我有用的解决方案而束手无策。

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

总之,长话短说,这是对我有用的方法,您可以摆脱mydsqldump命令的绝对路径:

  1. 按照本页上的说明将MySQL添加到Windows的路径中。
  2. 重新启动您的WAMP。 如果您打开了cmd窗口,请也将其关闭。
  3. 如果要测试新插入的路径,则是可选的 )通过在Windows搜索中搜索“ cmd”来打开cmd窗口,然后输入不带引号的“ mysqldump”。
    如果它返回如下用法说明 ,那么恭喜您,您的MySQL路径正常!
用法:mysqldump [OPTIONS]数据库[表]
或mysqldump [OPTIONS]-数据库[OPTIONS] DB1 [DB2 DB3 ...]
或mysqldump [OPTIONS]-所有数据库[OPTIONS]
有关更多选项,请使用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. 再次运行您的代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM