Как определить APP_ENV в приложении Symfony без использования DotEnv? - PullRequest
2 голосов
/ 30 апреля 2019

По умолчанию Symfony требует настройки для настройки на веб-сервере, а не в приложении.В моем случае установка этих переменных на сервере очень сложна.Итак, я хочу установить эти переменные внутри приложения (php или yaml) без DotEnv и переменных env веб-сервера .

Это переменные среды, которые мне нужно определить:

APP_ENV 
APP_SECRET
DATABASE_URL
MONGODB_URL
MAILER_URL

Вот что я нашел, кроме APP_ENV, который нигде не работает:

APP_ENV: ???
APP_SECRET: config/packages/framework.yaml
DATABASE_URL: config/packages/doctrine.yaml
MONGODB_URL: config/packages/doctrine_mongodb.yaml
MAILER_URL: config/packages/swiftmailer.yaml

Где мы определяем APP_ENV в Symfony 4?

1 Ответ

2 голосов
/ 01 мая 2019

Вы можете использовать .env.local.php для возврата массива.

Этот файл обычно создается при запуске composer dump-env [env], но ничто не мешает вам создать его вручную.

Этот файл загружается до того, как DotEnv загружает файлы ".env", и это простой массив, объединенный с $_SERVER и $_ENV. Если этот файл существует, компонент DotEnv вообще не используется.

например. вы можете вернуть что-то вроде:

return [
  'APP_ENV'           => 'prod',
  'APP_SECRET'        => 'verysecretmuchobscure',
  'CORS_ALLOW_ORIGIN' => '^https?://localhost(:[0-9]+)?$',
  'DATABASE_URL'      => 'mysql://db_user:db_password@127.0.0.1:3306/db_name',
  'JWT_SECRET_KEY'    => '%kernel.project_dir%/var/keys/private.pem',
  'JWT_PUBLIC_KEY'    => '%kernel.project_dir%/var/keys/public.pem',
  'JWT_PASSPHRASE'    => 'anotherthing',
];

Все это применимо, если вы используете Symfony 4.1+. В своем вопросе вы говорите Symfony 4, но не указываете, какую минорную версию вы используете.

Если вы используете 4.0, вам нужно выполнить подробные шаги здесь , чтобы обновить приложение:

  1. Скопируйте bootstrap.php из репозитория
  2. Скопируйте index.php из репозитория или обновите ваш index.php так, чтобы он соответствовал тому, что требуется bootstrap.php (в случае, если ваш index.php содержит изменения)
  3. То же самое для вашего console скрипта, если существует.
  4. Обновите свой основной .gitignore
  5. Переименование / перемещение / удаление существующих .env файлов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...