PHP shell_exec()问题

时间:2011-09-22 20:25:46

标签: php linux

我在使用PHP函数shell_exec()时遇到了问题。

我有一个应用程序,我可以从linux命令行完全运行。该应用程序需要几个小时才能运行,因此我尝试使用shell_exec()生成一个新实例来更好地管理。但是,当我通过shell_exec()运行完全相同的命令(在命令行上工作)时,它返回一个空字符串,并且看起来不像任何新进程一样。此外,它几乎立即完成。假设shell_exec()等待命令完成正确?

我也尝试了exec()的变体,结果相同。

有谁知道这里会发生什么?

命令中没有符号链接或任何类似的东西:只是应用程序的路径和一些命令行参数。

2 个答案:

答案 0 :(得分:0)

有些事情env

请参阅env(命令行界面)和cli脚本的php输出 还看看你的shell解释器是什么?

脚本和cli应用程序是否从一个用户运行? 如果是,请选择safe_mode

答案 1 :(得分:0)

确保正在运行的用户apache(可能是www-data)可以访问这些文件并且它们是可执行的(ls -la)。一个简单的chmod 777 [filename]可以解决这个问题。

默认情况下,PHP会在30秒后超时。您可以像这样禁用限制:

<?php
set_time_limit(0);
?>

修改

另请考虑:http://www.rabbitmq.com/