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

时间:2018-11-06 08:36:29

标签: php symfony symfony-2.8

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

id: "%env(SOME_ID)%"

是否可以通过config.yml文件访问它。

1 个答案:

答案 0 :(得分:3)

使用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')"

希望有帮助!