У меня есть приложение, построенное на Symfony 4.3. Он работает как положено на локальной машине, и он загружает .env.local
файл конфигурации.
Он также работает как положено на производственном сервере, и он загружает файл .env
.
Но что-то не так насервер разработки.
Настройки сервера разработки
Мы устанавливаем переменную среды APP_ENV
в значение dev
.
Ниже выводится php bin/console about
в среде разработки:
-------------------- ---------------------------------
Kernel
-------------------- ---------------------------------
Type App\Kernel
Environment dev
Debug true
Charset UTF-8
Cache directory ./var/cache/dev (1.3 MiB)
Log directory ./var/log (138 KiB)
Если я использую функцию phpinfo()
в начале файла /public/index.php
, APP_ENV встречается только 1 раз - он находится в разделе Environment .
Ноесли я использую phpinfo()
после загрузки config/bootstrap.php
, в разделе PHP Variables появляется еще несколько вхождений, и все они содержат prod
:
$_SERVER['APP_ENV'] prod
$_ENV['APP_ENV'] prod
^ этих 2 значений не былов начале файла /public/index.php
, поэтому похоже, что Symfony добавляет их и устанавливает для них неправильное значение prod
.
.env.dev
файл содержит это:
###> symfony/framework-bundle ###
APP_ENV=dev
но похоже этот файлвообще не загружается и вместо него загружается .env
.
Я сделал некоторую отладку, и похоже, что загружен неправильный файл env (и добавлены дополнительные переменные, показанные в phpinfo ()) вэта строка в файле config/bootstrap.php
:
// load all the .env files
(new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env');
Я что-то упустил? Я думал, что среда Symfony управляется только переменной среды APP_ENV
. Но, похоже, я ошибаюсь?
EDIT : Просто чтобы прояснить ситуацию - при разработке я имею в виду удаленный сервер разработки (вместо этого его можно назвать промежуточным)не локальный.