Php mysqldump执行错误的命令

Php mysqldump执行错误的命令,php,mysqldump,Php,Mysqldump,我尝试备份我的数据库。我有以下代码: <?php $command = 'mysqldump --user=root --host=localhost opencart_status > backup.sql'; $result = passthru($command); if(!$result){ echo "Error!"; } else{ echo "OK"; } ?> <?php

我尝试备份我的数据库。我有以下代码:

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

我没有使用数据库连接到服务器的密码。我需要备份的数据库名为
opencart\u status

输出basckup.sql已生成,但大小为0 B且为空。我在屏幕上看到的输出是错误的!我还尝试了
exec()
函数。但结果是一样的


谢谢您的建议。

问题可能在端口或您使用的命令中。请尝试以下代码:

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

问题可能在端口或您使用的命令中。请尝试以下代码:

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

首先,如果您查找
passthru
文档,您应该看到
passthru
不会返回任何有关执行状态的值。如果需要检查返回值,应在文档中添加第二个参数,该参数定义为
$return\u var

最有可能的情况是,您应该首先检查该值,而不是函数返回值


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

首先,如果您查找
passthru
文档,您应该看到
passthru
不会返回任何关于执行状态的值。如果需要检查返回值,应在文档中添加第二个参数,该参数定义为
$return\u var

最有可能的情况是,您应该首先检查该值,而不是函数返回值



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

您在屏幕上看到了什么错误?@Bfcm仅显示
echo“error!”
,因为
$result=passthru($command)
为false。您在屏幕上看到了什么错误?@Bfcm仅显示
echo“error!”
,因为
$result=passthru($command)是错误的。感谢您的建议。我有一个可能很愚蠢的问题。你写过命令行。您认为是Windows命令行还是什么命令行?是的,在Windows命令行上尝试该命令,看看输出了什么。您甚至可以在不重定向到文件的情况下启动:
mysqldump--user=root--host=localhost opencart\u status
我得到了这样的答案:“mysqldump”未被识别为内部或外部命令、可操作程序或批处理文件。这是mysqldump无法执行的问题。这可能是路径的问题,就像这条线索:你给我指明了正确的方向!我需要从安装sql server的地方在shell中运行该命令。例如D:\xampp\mysql\b谢谢您的建议。我有一个可能很愚蠢的问题。你写过命令行。您认为是Windows命令行还是什么命令行?是的,在Windows命令行上尝试该命令,看看输出了什么。您甚至可以在不重定向到文件的情况下启动:
mysqldump--user=root--host=localhost opencart\u status
我得到了这样的答案:“mysqldump”未被识别为内部或外部命令、可操作程序或批处理文件。这是mysqldump无法执行的问题。这可能是路径的问题,就像这条线索:你给我指明了正确的方向!我需要从安装sql server的地方在shell中运行该命令。例如D:\xampp\mysql\binI试图编辑localhost并添加了:80端口,但同样错误。是的,但结果相同。此外,我的设置是Apache/2.4.16(Win32)OpenSSL/1.0.1p PHP/5.6.12服务器,位于127.0.0.1端口80。您的Apache服务器不是您的MySQL服务器好的,是我的错。我有PID 4464和端口3306,但对于3306我有相同的错误。就像Ingus所说的,system、exec或passthru命令不返回任何响应。所以你的错误检查总是无效的。执行以下操作:删除你的backup.sql并检查它是否会被创建。我尝试编辑localhost并添加了:80端口,但同样错误。是的,但结果相同。此外,我的设置是Apache/2.4.16(Win32)OpenSSL/1.0.1p PHP/5.6.12服务器,位于127.0.0.1端口80。您的Apache服务器不是您的MySQL服务器好的,是我的错。我有PID 4464和端口3306,但对于3306我有相同的错误。就像Ingus所说的,system、exec或passthru命令不返回任何响应。所以你的错误检查总是无效的。执行以下操作:删除backup.sql并检查是否将创建它。