Использовать переменную существующей среды в Symfony 2.8 - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть приложение, созданное с использованием Symfony 2.8. Теперь конфигурации приложения необходимо получить доступ к переменной окружения. Это не работает в Symfony 2.8 (config.yml),

id: "%env(SOME_ID)%"

Есть ли способ получить к нему доступ в файле config.yml.

1 Ответ

0 голосов
/ 06 ноября 2018

С 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')"

Надеюсь, это поможет!

...