我试图用包括web服务器用户(即www-data)在内的所有用户为编辑/etc/profile , /etc/environment等不同的方法添加$PATH 。在任何情况下,它都可以在terminal中运行, PHP中的命令。
例如terminal中的echo $PATH显示可用的path,包括我添加的; 但是,PHP中的shell_exec('echo $PATH')显示了没有添加path的原始path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
我怎样才能设置全球$ PATH可以由networking服务器用户使用? 我在Ubuntu / Debian上使用nginx。
我试图编辑/etc/init.d/nginx ,我认为这是nginx的起点,但是没有效果。
你不说哪个发行版,但我猜是Ubuntu或类似的。
在/etc/init.d/apache2定义的默认PATH是/usr/local/bin:/usr/bin:/bin
在我的Ubuntu系统上有一个文件/etc/apache2/envvars 。 您可以在此文件中定义PATH ,并在重新启动Apache时使用该path。
PATH=$PATH:/your/addtional/path
对于nginx,你可以通过你想要的path作为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所以(感谢@迈克尔汉普顿聊天讨论),我发现system(...);的pathsystem(...); 看到的是你的php初始化脚本(在我的情况下是/etc/init.d/php-fcgi)。
经过多次挖掘,我发现这导致了解决scheme
env[PATH]=/your/custom/path
在php5-fpm.conf或@Ali指出php5-fpm启动脚本。