#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
ofconfig/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 во время настройки, даже если ни одно из них не определено во время компиляции. Думаю, хороший способ проверить наличие орфографических ошибок.