Переменные окружения становятся все более популярными для управления конфигурацией приложений. Они являются одним из основных понятий «12-факторного приложения». Их основные преимущества в том, что они могут быть изменены в результате процесса развертывания приложения без изменения кода, и что с ними не возникает проблем при публикации в репозитории.
Symfony поддерживал переменные окружения с самого первого дня, благодаря специальным переменным SYMFONY__. Однако их поведение было довольно просто: когда контейнер приложения построен, значения переменных окружения сбрасываются в скомпилированный контейнер. Поэтому, если эти переменные изменяются во время выполнения приложения, обновленные значения игнорируются.
В Symfony 3.2 добавлена полная поддержка переменных окружения. Первым изменением является то, что вам больше не придется указывать префикс SYMFONY__ для этих переменных. Второе изменение в том, что их значение теперь может быть изменено во время выполнения, так что приложение всегда будет использовать обновленное значение.
Для того, чтобы использовать переменную среды в любом конфигурационном файле Symfony, используйте новый синтаксис %env(VARIABLE_NAME)%
:
# app/config/config.yml doctrine: dbal: # ... password: "%env(DB_PASSWORD)%"
В предыдущем примере, значение пароля к базе данных Symfony/Doctrine получает из значения переменной окружения DB_PASSWORD. Чтобы избежать ошибок в случае неопределенных переменных, для них можно определить значения по умолчанию для этих переменных с помощью синтаксиса окружения (variable_name): VARIABLE_VALUE:
# app/config/parameters.yml parameters: env(DB_PASSWORD): s3cr3t_1234
Источник: https://symfony.com/blog/new-in-symfony-3-2-runtime-environment-variables