我找不到任何像这样的问题。如果我错了,请给我指出正确的答案。
我有以下情况:
我需要在cron作业中运行一个脚本(没问题),问题在我的脚本中,有些地方出错了,因为脚本没有正常运行。
不工作脚本
<?php
$command = 'mysql -u root -h localhost eephi < C:/wamp/www/file-20110817-0200.sql';
system( $command );
?>
最奇怪的是,命令-> 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 );
?>
那么这两个脚本有什么区别呢?一个很好,另一个不行..。我觉得很奇怪。我希望我能在这里找到解决办法。不管怎样,谢谢你抽出时间。
发布于 2011-08-17 16:03:07
在PHP内部执行路径错误可能与命令行中的环境不同。您可能必须在您的主管(例如/usr/local/bin/mysql ...
)中提供到mysql的完整路径。
您可以通过将2>&1
附加到命令的末尾来捕获shell的错误消息。这将将stderr重定向到stdout,以便PHP将错误消息视为命令输出的一部分。
发布于 2011-08-17 16:00:40
你试过用
exec();
而不是
system();
发布于 2011-08-17 16:02:58
也许区别不在于脚本,而在于运行环境?您试过在本地主机上运行第二个脚本吗?
https://stackoverflow.com/questions/7095866
复制相似问题