如何使用php system()函数更正运行mysql命令?

时间:2011-08-17 15:57:54

标签: php mysql

我找不到任何完全相同的问题。如果我错了,请指出正确的答案。

我有以下情况:

我需要在cron作业中运行一个脚本(没问题),问题出现在我的脚本中,出现问题,因为脚本运行不正常。

不工作的脚本

<?php

$command = 'mysql -u root -h localhost eephi < C:/wamp/www/file-20110817-0200.sql';
system( $command );

?>

最奇怪的是,命令 - &gt; mysql -u root -h localhost eephi < C:/wamp/www/file-20110817-0200.sql执行时是一个shell,工作正常,没有错误,一切运行正常。但是,当我在上面显示的php脚本中调用命令时它不起作用,没有错误,没有警告,没有任何东西被输出。

我有另一个脚本做类似的事情,但不一样,但想法是一样的..它工作正常。

工作脚本     

$command = 'mysqldump -u user -p****** -h myhost.com mytable > /home/user/www/backup/file-20110817-0200.sql';
system( $command );

?>

然后这两个脚本有什么区别?一个工作正常,另一个工作没有.. WEIRD给我。我希望我能在这里找到解决方案。无论如何,谢谢您的时间。

4 个答案:

答案 0 :(得分:3)

可能是路径错误 - 从PHP中执行操作的环境与命令行不同。您可能必须在您的exec中提供mysql的完整路径(例如/usr/local/bin/mysql ...

您可以通过在命令末尾附加2>&1来捕获shell的错误消息。这将'stderr重定向到stdout,因此PHP将错误消息视为命令输出的一部分。

答案 1 :(得分:0)

您是否尝试过使用

exec(); 

而不是

system();

答案 2 :(得分:0)

也许差异不在脚本中,而是在运行环境中?您是否尝试在本地主机上运行第二个脚本?

答案 3 :(得分:0)

我在'NOT WORKING SCRIPT'中找不到选项-p。因此,如果你从root下运行shell的sql命令,没有必要输入密码,所有工作正常。对于php来说它似​​乎不起作用,或者你在另一个用户下运行php。