我尝试使用不同的方法为所有用户添加$PATH,包括webserver用户(即www-data),例如编辑/ etc / profile,/ etc / environment等.在所有情况下,它都适用于终端,但不适用于
shell
PHP中的命令.
例如,终端中的echo $PATH显示可用路径,包括我添加的路径;但是,PHP中的shell_exec(‘echo $PATH’)显示了没有我添加的路径的原始路径:
在/usr/local / sbin中:在/usr/local / bin目录:/usr/sbin目录:在/usr/bin中:/ sbin目录:/ bin中
解决方法
你没有说哪个发行版,但我的猜测是Ubuntu或类似的.
在/etc/init.d/apache2中定义的默认PATH是/usr/local / bin:/usr/bin:/ bin
在我的Ubuntu系统上有一个文件/ etc / apache2 / envvars.您可以在此文件中定义PATH,并在重新启动Apache时使用该路径.
PATH=$PATH:/your/addtional/path
对于Nginx,您可以将您想要的路径作为fastcgi_param传递
location ~ \.PHP${ include /etc/Nginx/fastcgi.conf; fastcgi_pass unix:/tmp/PHP.socket; fastcgi_param PATH /usr/local/bin:/usr/bin:/bin:/your/path; }
您需要指定所需的整个PATH
进一步更新.
我有PHP设置为fcgi所以(感谢@MichaelHampton的一些聊天讨论)我发现了系统的路径(…); see是你的PHP init脚本中设置的一个(在我的例子中是/etc/init.d/PHP-fcgi).
env[PATH]=/your/custom/path