尝试通过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
。
答案 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')更优雅。