Некоторые переменные env в .env недоступны в debug:conter —env-vars

#symfony

#symfony

Вопрос:

Мой .env файл содержит следующие записи, но FOO не отображается при запуске bin/console debug:container --env-vars . Обратите внимание, однако, что $_ENV['FOO'] существует, когда я сбрасываю переменную.

 FOO=1
AUTH0_CLIENT_ID=clientid
AUTH0_CLIENT_SECRET=secret
AUTH0_DOMAIN=myapp.us.auth0.com
  

Что определяет, будет ли в контейнере доступен параметр env, определенный в .env ?

Комментарии:

1. Уверен, что вам нужно использовать это, чтобы оно было в списке. Добавьте foo: ‘%env(разрешить:FOO)%’ в разделе параметров в config/ services. yaml, и он появится.

2. Подтверждено, добавление foo: '%env(resolve:FOO)%' в parameters of config/services.yaml решило проблему. Спасибо!

3. @cerad Итак, вы можете написать ответ?

Ответ №1:

Не совсем уверен, заслуживает ли это ответа, но я полагаю, что это может помочь.

Файлы Symfony .env на самом деле являются лишь одним из возможных источников переменных $_ENV. Существует множество других переменных env, плавающих вокруг, и, конечно, в рабочей среде вы можете вообще не использовать .env.

Поэтому вместо сохранения доступа ко всем переменным env система конфигурации Symfony сохраняет только те, которые фактически используются. Итак, в этом случае:

 # config/services.yaml
parameters:
    foo: '%env(resolve:FOO)%'
  

Приведет к:

 bin/console debug:container --env-vars
  APP_SECRET          n/a                "84dc6de50e6f2f7af3db3f78f886840f"                                      
  DATABASE_URL        n/a                "mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"  
  FOO                 n/a                "1"                                                                     
  MAILER_DSN          n/a                n/a                                                                     
  VAR_DUMPER_SERVER   "127.0.0.1:9912"   n/a     
  

Для нового проекта 5.1.

Не по теме, но, по крайней мере, для меня это смутно интересно, приведенная выше команда также генерирует предупреждение

  [WARNING] The following variables are missing:
 * MAILER_DSN
  

MAILER_DSN закомментирован в файле default .env. Поэтому я предполагаю, что можно использовать значения env во время настройки, даже если ни одно из них не определено во время компиляции. Думаю, хороший способ проверить наличие орфографических ошибок.