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并检查是否将创建它。