在 Symfony 2.8 中使用现有的环境变量

Use Existing Environment Variable in Symfony 2.8

我有一个使用 Symfony 2.8 构建的应用程序。现在,应用程序配置需要访问一个环境变量。这在 Symfony 2.8 (config.yml),

中不起作用
id: "%env(SOME_ID)%"

有没有办法在 config.yml 文件中访问它。

使用 Symfony 2.8,您可以从您的服务器声明一些外部参数:

  • 使用 Apache,使用 SetEnv 指令:

    <VirtualHost *:80>
        ...
        SetEnv    SYMFONY__DATABASE__USER user
        SetEnv    SYMFONY__DATABASE__PASSWORD secret
        SetEnv    SYMFONY__SOME_ID 1234
        ...
    </VirtualHost>
    
  • 使用 Nginx,使用 fastcgi_param 指令:

    server {
      ...
      location ~ ^/app\.php(/|$) {
        ...
        fastcgi_param SYMFONY__DATABASE__USER user;
        fastcgi_param SYMFONY__DATABASE__PASSWORD secret;
        fastcgi_param SYMFONY__SOME_ID 1234
        ...
      }
    }
    

这些环境变量将传递给容器,并进行一些转换:

  • SYMFONY__ 前缀已删除
  • 参数名称小写
  • 双下划线 __ 替换为句点。

因此您可以按原样使用它们:

doctrine:
    dbal:
    driver:   pdo_mysql
    dbname:   symfony_project
    user:     '%database.user%'
    password: '%database.password%'
some_config:
    id: '%some_id%'

你也可以传递一些PHP常量:

parameters:
    some_id: "@=constant('SOME_ID')"
    my_class.some_id: "@=constant('My_Class::SOME_ID')"

希望对您有所帮助!