【问题标题】:Reading Linux environment variables in PHP pool configuration files在 PHP 池配置文件中读取 Linux 环境变量
【发布时间】:2016-11-09 15:12:33
【问题描述】:

我设置了一个名为DISPLAY_ERRORS 的环境变量,其值为on

我正在尝试在php-fpm.d/www.conf 中使用此环境变量,但是我无法找出正确的语法。这是我尝试过的:

1:

[www]
php_flag[display_errors] = $DISPLAY_ERRORS

2:

[www]
php_flag[display_errors] = $(DISPLAY_ERRORS)

3:

[www]
php_flag[display_errors] = ${DISPLAY_ERRORS}

4:

[www]
php_flag[display_errors] = "${DISPLAY_ERRORS}"

以上方法似乎都不起作用。在所有情况下,我都会收到以下错误:

ERROR: [/usr/local/etc/php-fpm.d/www.conf:17] error while parsing 'php_flag[display_errors]' : invalid boolean value

注意 - 我知道“on”不是布尔值,但是 php_flag[display_errors] = on 工作正常,所以我假设问题在于我如何尝试获取变量的值。

【问题讨论】:

  • #1 是要使用的格式。我想知道传入的环境变量是否仅适用于 env 数组。让我们进行实验:在www.conf 中尝试env[foo] = $DISPLAY_ERRORS,然后在重新加载后在PHP 中尝试echo getenv('foo'); 还要确保在您的FPM conf 中clean_env = no。结果是什么?
  • 您是否在用户会话中设置了 env var,并希望 fpm 看到?
  • @bishop - 当我做你写的事情时,我得到了我在$DISPLAY_ERRORS 环境变量中设置的值。
  • @Maerlyn - 我正在使用 Docker 环境变量设置环境变量。这在 PHP 代码文件中可以正常工作,但在 PHP 配置文件中却不行。
  • AFAIK 你不能使用这样的环境变量,但你应该能够通过代码中的$_ENV 访问它们。

标签: php environment-variables fpm


【解决方案1】:

我从未见过在env[] 分配以外的任何行上使用传入的环境变量。虽然这可能是可能的,但根据您的实验结果(如 OP cmets 中所述),PHP FPM 似乎只能在 env[] 分配期间访问传入的环境变量......而不是 php_flag 或任何其他指令。

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 2019-08-27
    • 2017-03-06
    • 2015-11-10
    • 2013-05-27
    • 2012-02-08
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多