通过 PHP-fpm+nginx 没有可用的环境变量

2023-11-23

我尝试按以下方式修改 php.ini:

variables_order = "GPCSE"
register_globals = On

但所需要的PATH变量既不在$_ENV也不能通过访问getenv('PATH').
我在跑Nginx + PHP-FPM on 乌班图10.04.

Note:在控制台中执行以下命令会给出正确的结果:

php -r "echo getenv('PATH');"

我猜可能是PATH是 bash 的环境变量,但只要 php-fpm 不通过 bash 启动,它就没有必需的变量。有什么办法可以包含它们吗?

Thanks.

Update#1: 作为临时解决方案,我发现 PATH 变量存储在“/etc/environment”文件中。所以我就从那里读它。如果有人需要代码:

preg_match('/^(PATH)="?([^"]+)"?$/i', file_get_contents('/etc/environment'), $match);
putenv($match[1]."=".$match[2]);

默认情况下,PHP-FPM清除环境变量(从www.conf):

; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV and $_SERVER.
; Default Value: yes
;clear_env = no

您可以取消注释最后一行来设置clear_env to no,但如果您愿意,您可以仅设置所需的环境变量:

env[PATH] = $PATH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 PHP-fpm+nginx 没有可用的环境变量 的相关文章

随机推荐