简体   繁体   中英

Use Existing Environment Variable in Symfony 2.8

I have an application built using Symfony 2.8. Now, the application config need to access an environment variable. This is not working in Symfony 2.8 (config.yml),

id: "%env(SOME_ID)%"

Is there a way to access it in config.yml file.

With Symfony 2.8, you can declare some external parameters from your server :

  • With Apache, with the SetEnv directive:

     <VirtualHost *:80> ... SetEnv SYMFONY__DATABASE__USER user SetEnv SYMFONY__DATABASE__PASSWORD secret SetEnv SYMFONY__SOME_ID 1234 ... </VirtualHost> 
  • With Nginx, with fastcgi_param directive:

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

These environment variables will be passed to the container, with some transformations:

  • SYMFONY__ prefix is removed
  • Parameter name is lowercased
  • Double underscores __ are replaced with a period.

So you can use them as is:

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

You can also pass some PHP constants :

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

Hope that helps !

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM