1

我正在尝试通过 php 获取数据库的 mysqldump,我只能通过这种方式通过命令行获取数据库转储。

d:
cd "d:\wamp\bin\mysql\mysql5.5.24\bin"
mysqldump.exe
mysqldump --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"

当尝试以这种方式从 php 执行此命令时,我得到一个空的转储文件。

$cmd  = 'd: cd "d:/wamp/bin/mysql/mysql5.5.24/bin"mysqldump.exe>mysqldump --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"';
exec($cmd);

或者这样

$cmd  = 'd:/wamp/bin/mysql/mysql5.5.24/bin>mysqldump.exe>mysqldump --user=user --password=password --host=localhost db_name > D:\dump\test.sql';
exec($cmd);

或者这样

$cmd  = 'd:/wamp/bin/mysql/mysql5.5.24/bin>mysqldump --user=user --password=password --host=localhost db_name > D:\dump\test.sql';
exec($cmd);

我只得到空的转储文件。我在这里遇到了很多这样的问题还有更多的问题,但没有一个解决方案对我有用。

请查看并建议任何可能的方法。

谢谢。

4

1 回答 1

4

您似乎使用 Windows,创建多命令行的方法是使用 '&' 运算符(更多信息

例子 :

$cmd  = 'd: & cd "d:/wamp/bin/mysql/mysql5.5.24/bin" & mysqldump.exe --user=user --password=password --host=localhost db_name > "D:\dump\test.sql"';
exec($cmd);

此外,请仔细检查您的路径,因为您正在使用d:/wamp/...和更高版本D:\dump\test.sql,您的命令似乎使用斜杠和反斜杠,并且只\应该工作。

最后,您可以使用exec的第二个参数来调试您的命令:

$output = array();
exec($cmd, $output);
var_dump($output);
于 2012-11-24T08:36:58.630 回答