2011-09-22 52 views
0

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

我有一个应用程序,我可以从linux命令行运行得很好。该应用程序需要几个小时才能运行,所以我试图用shell_exec()产生一个新实例来更好地管理。但是,当我通过shell_exec()运行完全相同的命令(它可以在命令行上运行)时,它会返回一个空字符串,而且看起来没有任何新进程已启动。再加上它几乎立即完成。 shell_exec()是否等待直到命令完成正确?

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

有没有人知道这里会发生什么?

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

+0

请问PHP \ Apache的发售者有权限来运行应用程序? – 2011-09-22 20:28:47

+0

你可以使用'shell_exec()'/'exec()'等运行任何其他命令吗?试试'echo exec('whoami');' – Dor

+0

@Dagon:我该如何检查? – Brett

回答

0

有些事情与你env

请参阅从cli(命令行界面)和php脚本
env产量也看看你的shell解释?

脚本和cli应用程序是否从一个用户运行?
如果是这样,SE选项safe_mode

0

确保用户Apache是​​在(可能是www数据)运行具有对文件的访问,他们是可执行文件(ls -la)。一个简单的chmod 777 [filename]会解决这个问题。

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

<?php 
set_time_limit(0); 
?> 

编辑:

也可以这样考虑:http://www.rabbitmq.com/

+0

用户看起来是wwwrun。但是应用程序权限是-rwxrwxrwx,所以它看起来好像用户应该不重要。尽管如此? – Brett

+0

只是这是愚蠢的,你应该真的考虑其他方法。你可以发布你正在运行的脚本和应该运行它们的php代码吗?也许告诉我们更多关于它的事情? – demux