2016-01-14 109 views
1

我尝试备份我的数据库。我有以下代码:mysqldump错误的命令执行

<?php 
    $command = 'mysqldump --user=root --host=localhost opencart_status > backup.sql'; 
    $result = passthru($command); 
    if(!$result){ 
     echo "Error!"; 
    } 
    else{ 
     echo "OK"; 
    } 
?> 

我没有密码连接到服务器与数据库。我需要备份的数据库被称为opencart_status

输出basckup.sql被创建,但具有0 B尺寸并且为空。我在屏幕上看到的输出是错误!我也尝试了exec()函数。但是结果相同。

谢谢您的建议。

+0

你在屏幕上看到了什么错误? – Bfcm

+0

@Bfcm只有'echo“错误!”'因为'$ result = passthru($ command);'是错误的。 –

回答

0

问题可能出现在端口或您使用的命令中。试试下面的代码:

所有的
<?php 
    $command = 'mysqldump --host=localhost:3306 --user=root opencart_status > backup.sql'; 
    system($command); 
?> 
+0

我试图编辑本地主机,并添加:80端口,但同样错误。 –

+0

你试过3306吗? – Bfcm

+0

是的,但结果相同。除了我的设置是_Apache/2.4.16(Win32)OpenSSL/1.0.1p PHP/5.6.12服务器在127.0.0.1端口80_ –

0

首先,如果你看看passthru文档,你应该看到passthru没有返回关于执行状态的任何值。如果你需要一个返回值来检查,你应该增加其在文档中定义为$return_var第二个参数: http://php.net/manual/en/function.passthru.php

最有可能的,你应该检查值而不是函数的返回值开始。

之后我会建议您尝试从命令行运行mysqldump命令。您应该能够在控制台中调试mysqldump问题,然后将其移至php执行。

+0

谢谢你的建议。我有一个也许愚蠢的问题。你写了关于命令行。你认为Windows命令行还是什么命令行? –

+0

是的,请尝试Windows命令行上的命令并查看正在输出的内容。你甚至可以开始没有输出重定向到文件:'mysqldump --user = root --host = localhost opencart_status' – Ingus

+0

我得到了这个答案:_'mysqldump'不被识别为内部或外部命令,可操作程序或批处理文件._ –