grabbee
@grabbee

Как скрестить «symfony/dependency-injection» с переменными окружения?

Не использую фреймворк. Только компоненты. Сервис контейнер не видит переменную из окружения. Я создал файл .env - записал туда переменную DSN (MESSENGER_TRANSPORT_DSN) чтобы использовать ее в конфигурации. Перед созданием контейнера я загружаю переменные окружения из файла
$dotenv = new Dotenv();
//$dotenv->usePutenv();
$dotenv->bootEnv('../.env');

Но до сервиса переменная не доходит
arguments:
            $dsn: '%env(MESSENGER_TRANSPORT_DSN)%'

Хотя её можно увидеть через getenv('MESSENGER_TRANSPORT_DSN') если раскомментировать usePutenv();

Я что-то пропустил. Как заставить контейнер увидеть переменные из .env
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
https://github.com/symfony/symfony/blob/5.4/src/Sy...

/**
 * @param bool $resolveEnvPlaceholders Whether %env()% parameters should be resolved using the current
 *                                     env vars or be replaced by uniquely identifiable placeholders.
 *                                     Set to "true" when you want to use the current ContainerBuilder
 *                                     directly, keep to "false" when the container is dumped instead.
 */
public function compile(bool $resolveEnvPlaceholders = false)


Судя по всему вы не дампаете контейнер. Вам надо вызывать
$container->compile(true);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы