PHPs exec()无法访问某些命令,但可以使用Ruby的'System'命令

时间:2012-03-18 20:42:19

标签: php ruby shell

在我的本地计算机上,我可以通过google chrome在控制器的rails应用程序中运行以下命令:

system 'say hello dan'

这会产生预期的输出 - 我的mac上的'say'程序会说“你好”。

从PHP应用程序中的控制器运行相同的命令,或者通过谷歌浏览器运行任何PHP脚本,并且没有输出。

exec('say hello dan');exec('/usr/bin/say hello dan');都不起作用。

我检查了权限,但是apache和我一样以同一个用户身份运行。

然而,从命令行运行包含该代码的脚本可以正常工作!

任何人都可以提供任何有关某些程序不起作用的见解吗?其他命令,如afplay和/ usr / bin中的其他标准命令都可以正常工作。

1 个答案:

答案 0 :(得分:2)

您的服务器可能配置为在安全模式下使用PHP。安全模式限制exec()如下:

“你只能在safe_mode_exec_dir中执行可执行文件。出于实际原因,目前不允许在可执行文件的路径中包含..组件。在此函数的参数上执行escapeshellcmd()。”