在symfony中运行shell_exec()

时间:2010-06-28 15:38:10

标签: php shell symfony1

我有一个程序在执行一些后台处理后返回以逗号分隔的数字字符串。我打算使用shell_exec在symfony中运行它;但是,我得到的只是NULL(通过var_dump()显示。我尝试了以下调试步骤。

我通过Symfony中的命令行石灰单元测试来运行该文件(它是一个PHP类) - 它可以工作并在那里给出正确的结果。

为了检查,我在同一个地方尝试了一个简单的命令ls -l,看看我是否会得到任何东西。同样,我遇到了同样的问题 - 浏览器中的var_dump显示为NULL,但它通过命令行工作。

可能是什么问题?在浏览器中运行shell_exec()是否有限制?

编辑:只是为了澄清一下,当我在Web服务器上将它们作为独立的PHP脚本运行时,shell_exec()命令会起作用(例如,将它们放在我的文档根目录中。它们似乎不在symfony框架下工作,出于某种原因。

3 个答案:

答案 0 :(得分:3)

我终于解决了它,结果证明它非常简单,而且非常无关。

我运行的shell命令采用以下格式:face_query -D args。我没有意识到Apache会以用户www-data执行PHP,因此程序face_query不会在PATH中(目录实际上是~/bin)。将程序名称更改为程序的完整路径解决了它。

我也从中收集到只有www-data具有执行权限的命令才能运行。在这种情况下,www-data与我的用户位于同一组中,但否则可能会出现问题。

答案 1 :(得分:0)

你尝试过使用exec吗?或者其他变体之一。我无法确定使用哪一个并且总是与exec混在一起。

http://uk.php.net/manual/en/function.exec.php

答案 2 :(得分:0)

您的网络服务器是否以安全模式运行php?

  

注意:当PHP以安全模式运行时,此功能被禁用。   来自:http://php.net/manual/en/function.shell-exec.php