1

更新:终于让这个东西工作了,但仍然不确定问题是什么。我正在使用通过网络文件夹访问的 wamp 服务器。

仍然存在的问题是,要执行 mysqldump,我必须从用于托管 WAMP 服务器的实际机器访问 php 文件。

更新结束

我正在运行一个 wamp 服务器并尝试使用 mysqldump 来备份我拥有的 mysql 数据库。以下是我用来运行 mysqldump 的 PHP 代码。

exec("mysqldump 备份 -u$user -p$pass > $sql_file");

当我运行脚本时,页面只会加载并且不会创建备份。

正在创建一个空白文件,所以我知道发生了一些事情。

额外信息:

* exec() is not disabled
* PHP is not running in safe mode

有任何想法吗??

赢 XP、WAMP、MYSQL 5.0.51b

4

5 回答 5

1

您确定$pass已定义并且开头没有空格字符吗?

如果不是,mysqldump将等待命令行输入密码。

于 2010-07-17T20:32:23.037 回答
1

mysqldump 可能会超过 php 应该在您的系统上运行的最长时间。尝试在 cmd 中使用命令或增加 php.ini 中的 max_execution_time 。

于 2009-10-21T14:09:31.733 回答
0

我也一直在努力使用 mysqldump 实用程序。根据我的经验,我有几件事要检查/尝试:

  • 您的服务器是否设置为允许程序使用 exec 命令运行程序?(我的虚拟主机服务器不允许我这样做。)使用不同的命令进行测试。

  • 是否安装了 mysqldump 实用程序?检查与whereis mysqldump

  • 尝试添加优化参数--opt

于 2009-10-21T20:54:20.870 回答
0

不久前我也发生过同样的事情。一位同事向我指出了 MySQL GUI 工具,我一直在用它进行备份。附带的查询浏览器也不错。

MySQL GUI 工具

于 2009-10-21T14:11:01.530 回答
0

查看 mysqldump 的 stderr 输出可能会有所帮助:

$cmd = "mysqldump backup -u$user -p$pass 2>&1 > $sql_file";
exec($cmd, $output, $return);
if ($return != 0) { //0 is ok
    die('Error: ' . implode("\r\n", $output));
}   

如果或者是用户提供的,你也应该使用escapeshellarg() 。$user$pass

于 2009-10-21T14:15:42.100 回答