我尝试使用$PATH
不同的方法(例如编辑、等)为所有用户(包括 Web 服务器用户(即 www-data))/etc/profile
添加/etc/environment
。在所有情况下,它都在终端中工作,但不适用于 PHP 中的 shell 命令。
例如echo $PATH
在终端中显示可用路径,包括我添加的路径;但是shell_exec('echo $PATH')
在 PHP 中显示原始路径,但没有我添加的路径:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
如何全局设置 $PATH 以供 Web 服务器用户使用?我在 Ubuntu/Debian 上使用 nginx。
我尝试编辑/etc/init.d/nginx
,我认为这是 nginx 的起点,但没有效果。
答案1
你没有说是哪个发行版,但我猜是 Ubuntu 或类似的。
默认 PATH 定义/etc/init.d/apache2
为/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;
}
您需要指定所需的整个路径
进一步更新。
我已将 php 设置为 fcgi,因此(感谢@MichaelHampton 的一些聊天讨论)我发现system(...);
看到的路径是您在 php init 脚本中设置的路径(在我的情况下是 /etc/init.d/php-fcgi)。
经过一番挖掘,我发现这从而得到解决方案
env[PATH]=/your/custom/path
或者正如@Ali在启动脚本php5-fpm.conf
中指出的那样php5-fpm
。