Laravel 5 не читает значения из точечных файлов ENV

Не знаю актуален этот вопрос или нет. LARAVEL 5 все еще находится в стадии разработки. Я вытащил LARAVEL 5 после просмотра одного из видеороликов Laracast о новых функциях в LARAVEL 5. Я не мог не дождаться его официального выпуска.

Я назвал файл локальной среды dot как .env.local.php. Но по какой-то причине я не могу получить значения из этого точечного файла при использовании $_ENV['KEY'].

Я совершенно уверен, что правильно настроил среду. При выполнении $app->environment() показывает правильное окружение. Изменился ли в LARAVEL 5 способ получения значений из точечных файлов, или я что-то упустил?


person Nirmalz Thapaz    schedule 14.10.2014    source источник
comment
возможный дубликат Как правильно установить ENV переменные в Laravel 5?   -  person Moshe Katz    schedule 07.11.2014


Ответы (1)


По умолчанию в файле environment.php у вас есть что-то вроде этого:

if (file_exists(__DIR__.'/../.env'))
{
    Dotenv::load(__DIR__.'/../');
}

поэтому читается только файл .env (обратите внимание, что .env не .env.php - поэтому вы должны переименовать свой файл - или вы можете добавить в качестве второго параметра имя файла .env.php, если хотите). Любые другие файлы среды (.local.env) по умолчанию не читаются — вам нужно будет загрузить их вручную.

Если у вас нет такого кода по умолчанию, вам, вероятно, следует снова обновить/установить Laravel 5 (изменения появляются очень часто)

Теперь я не знаю, какой метод вы используете, но вы можете поместить в свой файл .env также имя вашей среды, например, в переменную APP_ENV, создать файл .local.env с нужным содержимым, а затем вы можете использовать в файле environment.php:

if (file_exists(__DIR__.'/../.env'))
{
    Dotenv::load(__DIR__.'/../');

    if (getenv('APP_ENV') && file_exists(__DIR__.'/../.' .getenv('APP_ENV') .'.env')) {
        echo "loading";
        Dotenv::load(__DIR__ . '/../', '.' . getenv('APP_ENV') . '.env');
    }

}

Если вы не хотите делать это таким образом, вы, вероятно, можете изменить другой и загрузить файл env, который вы хотите, на основе $env, предполагая, что вы используете обнаружение среды на базе ПК.

Если неясно, вы также можете посмотреть Что такое правильный способ установки переменных ENV в Laravel 5?

person Marcin Nabiałek    schedule 14.10.2014
comment
Теперь очень ясно. Таким образом, кажется, что г-н Отвелл предпочел что-то еще обнаружению среды на основе ПК. Хотя мне нравился ПК, но опять же у него должны быть веские причины. - person Nirmalz Thapaz; 15.10.2014
comment
А где этот файл - environment.php? - person jayarjo; 17.05.2015
comment
Я не нашел environment.php в 5.2 - person Jaskaran Singh; 01.12.2016