Почему Laravel использует неправильный файл базы данных после настройки среды?

В bootstrap/start.php у меня есть следующее:

$env = $app->detectEnvironment(function()
{
    if($myenv = getenv('APPLICATION_ENV')):
        return $myenv;
    else:
        return 'local';
    endif;
});

Хорошо, поэтому я настраиваю локальную папку и помещаю файл database.php с моими локальными подключениями.

Чтобы убедиться, что он выбирает правильную среду, я добавил шаблон: {{ App::environment(); }}, который выводит local.

Но при вызове БД он дает мне ошибку: Undefined index : DB1_HOST

В моем базовом (производственном) database.php файле есть:

'host'      => $_SERVER["DB1_HOST"],
'database'  => $_SERVER["DB1_NAME"],
'username'  => $_SERVER["DB1_USER"],
'password'  => $_SERVER["DB1_PASS"],

Почему он смотрит на файл производственной базы данных?


person Lee    schedule 15.08.2013    source источник
comment
Ваш файл находится на app/config/local/database.php?   -  person Antonio Carlos Ribeiro    schedule 15.08.2013
comment
да исправить. если я перейду и использую env = local, он подберет это!   -  person Lee    schedule 15.08.2013
comment
Где вы звоните в БД? Если в CLI нужно указать --env=local. Кроме того, подумайте о том, чтобы сделать вашу локальную среду по умолчанию и специально указать производство, просто чтобы вы никогда не перешли в производство случайно (поскольку это, очевидно, может привести к ужасным вещам).   -  person fideloper    schedule 16.08.2013
comment
Разве $myenv = getenv('APPLICATION_ENV') не всегда будет правдой? Вы присваиваете результат getenv $myenv.   -  person stephangroen    schedule 19.06.2014
comment
Нет, если "APPLICATION_ENV" не было установлено. Тогда он будет ложным и по умолчанию будет локальным.   -  person F3CP    schedule 20.06.2014


Ответы (4)


Laravel также хранит информацию о конфигурации в

bootstrap/cache/config.php

В некоторых случаях он не обновляется, что может привести к неверной информации в базе данных. Удаление файла должно решить проблему.

person Mahmood    schedule 03.05.2016
comment
Это была моя проблема, спасибо, что опубликовали решение годом ранее :) - person Amin.T; 18.10.2017

Если вы пытаетесь использовать artisan в своем терминале и хотите установить переменную среды раз и навсегда, вы можете сделать:

export APPLICATION_ENV=local

И проверьте текущую среду с помощью php artisan env

person Valentin    schedule 19.06.2014

Сначала загружаются производственные файлы конфигурации, а затем они объединяются с переопределениями из других сред. Если производственный файл генерирует ошибку (например, неопределенный индекс), загрузка конфигурации будет преждевременна без загрузки переопределений. В производственном файле конфигурации убедитесь, что значение установлено, прежде чем пытаться его использовать, и тогда локальный файл конфигурации загрузится правильно.

person Steven Henty    schedule 17.01.2015

Очистите кеш конфигурации, так как это может повлиять

Конфигурация php artisan: кеш

person Shivdhwaj Pandey    schedule 07.11.2017