PHP从哪里获得$ PATH?

时间:2016-05-19 09:45:06

标签: php macos shell path

尝试通过PHP执行shell命令

在终端中,如果我使用echo $PATH,我会获得我已设置为/Users/edward/.composer/vendor/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/go/bin

的完整路径

在PHP中get_current_user()为我提供了我在上述终端登录的用户edward

但是,如果我运行shell_exec('echo $PATH')我只会/usr/bin:/bin:/usr/sbin:/sbin这对我来说是一个问题,因为我正在尝试使用shell_exec()来运行它无法找到的命令,鉴于$PATH

我正在使用带有apache2和PHP 5.6的Mac OS X 10.11.4。 添加到$PATH.profile中的.bash_profile似乎没有任何效果。

P.S。我知道我可以通过在shell_exec()调用中使用可执行文件的完整路径来解决这个问题,但是我在Mac系统上开发并部署到linux系统并且路径不一样,所以我'而只是修复我的$PATH

1 个答案:

答案 0 :(得分:0)

当你在浏览器上运行它时,它来自$ _SERVER [“PATH”](通过apache提供)。当“你”(爱德华)在shell终端上运行它时,它将与“echo $ PATH”不同。 apache webserver将使用'apache'或'httpd'用户权限运行。 “/ usr / bin:/ bin:/ usr / sbin:/ sbin”是apache服务器用户的$ PATH值。

您可能希望看到:http://php.net/putenv& http://php.net/apache_setenv

旁注:如果你打算在制作中使用它,使用getenv('PATH')会比shell_exec('echo $ PATH')更优雅。