【问题标题】:Unable to access system-wide environment variable in php-fpm无法在 php-fpm 中访问系统范围的环境变量
【发布时间】:2016-07-20 16:14:54
【问题描述】:

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

但是这个变量值是 $_SERVER 数组中的一个空白字符串。

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

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

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

【问题讨论】:

  • 我找到了解决方案:在 apache envvars 文件中包含 "./etc/profile.d/env.sh" 并为每个文件添加 PassEnv VirtualHost 部分中的变量。
  • Alexey,你找到解决这个问题的方法了吗?

标签: php environment-variables


【解决方案1】:

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

【讨论】:

  • getenv() 也返回一个空值。如果设置了$_SERVER['ENVTEST'] 值但为空,它还能返回什么?
猜你喜欢
  • 1970-01-01
  • 2019-12-15
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2014-02-11
  • 2021-05-16
相关资源
最近更新 更多