设置全局环境变量的正确方法是什么,以便在 Ubuntu 上获取所有进程,包括通过 init.d ( service <service> start
) 启动的进程?细节:
我第一次在 PHP 中看到这个问题,但现在发现它不是 PHP 特有的。以下是我所看到的原始解释。
在/etc/environment
我已经设置:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
SYS_ENVIRONMENT=dev
然后在 PHP 配置文件中/etc/php/7.2/fpm/pool.d/www.conf
我定义了:
env[SYS_ENVIRONMENT] = $SYS_ENVIRONMENT
然后重新启动php7.2-fpm。然后在检查 phpinfo 页面时,会列出该变量,但不会列出其值。它是在登录 shell 中定义和访问的。
我确实尝试clear_env = no
在www.conf
文件中进行设置,但这并不使该值可用。
php7.2-fpm
我通过启动service php7.2-fpm start
,而不是作为登录 shell 的子级启动。
我应该做什么来确保环境可供所有进程使用?
我的Web服务器是Nginx,操作系统环境是Ubuntu 18.04.1 LTS。
答案1
可能是这样的:http://nginx.org/en/docs/ngx_core_module.html#env
默认情况下,nginx 会删除从其父进程继承的所有环境变量(TZ 变量除外)。
您可以使用该env
指令显式允许 nginx 获取环境变量。