首页 > 解决方案 > Symfony 3.4 用 parameters.yml 中的变量覆盖环境变量

问题描述

我有以下设置,它似乎工作了一段时间:环境变量,如 TEST=1,并根据配置在 parameters.yml 中定义了默认值:

parameters:
    env(TEST): 2

当我转到控制台并输出容器参数时,它始终是 parameters.yaml 中的值:

bin/console debug:container --parameters | grep env
env(TEST) 2

我也尝试完全按照文档中所说的那样做:

TEST: "%env(TEST)%"
env(TEST): 2

现在,当我转储参数时,我同时拥有它们:

bin/console debug:container --parameters | grep env
TEST %env(TEST)%
env(TEST) 2

更准确地说:我使用 docker setup,容器内的 printenv 显示了我的 TEST=1。

有人可以解释一下这里发生了什么吗?它已经工作了一段时间,然后,可能在一些重大更新之后,被打破了。

我尝试调试它并在 Symfony 源中找到一个非常奇怪的地方:https ://github.com/symfony/symfony/blob/3.4/src/Symfony/Component/DependencyInjection/ContainerBuilder.php#L1416

在那一行,传递了一个值“2”,它不满足条件并被返回。

标签: phpsymfony

解决方案


看起来一切正常 - 只是参数调试输出让我感到困惑。


推荐阅读