无法访问php fpm中的系统范围环境变量

无法访问php fpm中的系统范围环境变量,php,environment-variables,Php,Environment Variables,Ubuntu 16.04、php7.0-fpm、apache 2.4、nginx 1.10.0 我在两个可能的位置添加了一个系统范围的环境变量: /etc/environment: ENVTEST=123 /etc/profile.d/env.sh: export ENVTEST=123 检查: vagrant@localhost:~$ echo $ENVTEST 123 在/etc/php/7.0/fpm/pool.d/www.conf中,我将变量传递给php: env[ENVTEST]

Ubuntu 16.04、php7.0-fpm、apache 2.4、nginx 1.10.0

我在两个可能的位置添加了一个系统范围的环境变量:

/etc/environment:
ENVTEST=123

/etc/profile.d/env.sh:
export ENVTEST=123
检查:

vagrant@localhost:~$ echo $ENVTEST
123
在/etc/php/7.0/fpm/pool.d/www.conf中,我将变量传递给php:

env[ENVTEST] = $ENVTEST
但此变量值在$\u服务器数组中是一个空白字符串

如果我在www.conf
env[envetest]=123中使用一个静态值,它就可以正常工作

在控制台模式下,我可以访问变量值,它不仅仅在php fpm模式下工作


我还尝试通过Apache配置中的
SetEnv
设置变量,但结果相同-变量已设置,但值为空字符串。

您可以在脚本中使用
getenv()
函数测试值是否正确设置。除了
setenv()
,我还没有找到通过脚本安全地推送环境变量的方法,但是如果您愿意,它可能不会将永久性更改推送到您的运行时环境,并且可能只在每次运行时进行设置。

getenv()
还返回一个空值。如果
$\u SERVER['ENVTEST']
值设置为空,它还可以返回什么?我找到了解决方案:在apache envvars文件中包含“/etc/profile.d/env.sh”,并为VirtualHost部分中的每个变量添加PassEnv。Alexey,您找到了解决此问题的方法吗?