与passthru在php中意外的行为

我已经在Ubuntu的12.04上设置了nginx和php。 我有以下的PHP文件:

<?php echo "Hello "; echo passthru("cat /proc/meminfo"); echo "world. I am "; echo passthru("whoami"); ?> 

从命令行运行时,这种方式是完全正常的,php从/ proc / meminfo中返回文本。 当通过nginx运行,但是,我看到这样的:

 Hello world. I am www-data 

显然,passthru正在工作。 但是,我似乎无法读取任何/ proc。 / proc的权限是dr-xr-xr-x,我已经确认nginx和php运行的www-data用户可以访问那个目录。 我打开了PHP日志logging,并没有与此相关的错误消息。

build议?

编辑:安全模式closures。

所以,我们把这个问题解决了 – 我把这个问题放在了这个问题的下一个人身上:

我们validation了使用猫的完整path解决了这个问题。 没有明显的错误,因为passthru没有捕获stderr(错误是找不到猫)。 河然后发现$ PATH被指定为错误的东西,并修复它。