Перезагрузка переменных .env без перезапуска сервера (Laravel 5, виртуальный хостинг)

Мой Laravel 5 работал нормально, пока база данных не была настроена, затем обнаружил эту ошибку:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

В некоторых исследованиях кажется, что я настроил доступ к MySQL слишком поздно, поэтому мне нужно перезапустить сервер, чтобы получить правильные переменные среды. Ну, я использую общий сервер Dreamhost и просто не могу этого сделать.

Как мне решить эту проблему?

Спасибо

20

Решение

Если вы бежали php artisan config:cache на вашем сервере, тогда ваше приложение Laravel может кэшировать устаревшие параметры конфигурации, которые вы указали в .env файл.

Бежать php artisan config:clear чтобы исправить это.

47

Другие решения

Возможно, ваши переменные конфигурации кэшированы. Проверьте свой config/app.php а также ваш .env файл потом попробуй

php artisan cache:clear

в командной строке.

10

В случае, если на этот вопрос натолкнется кто-то, кто не сможет перезагрузить свой веб-сервер (долго выполняемая консольная команда, например, бегущий по очереди) или ему нужно будет перезагрузить промежуточный запрос файла .env, я нашел способ правильно перезагрузить переменные .env в laravel 5.

use Dotenv;
use InvalidArgumentException;

try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
3

Краткое решение:

use Dotenv;

with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());

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

app('db')->purge($connection->getName());

после перезагрузки .env, приложение Laravel могло получить доступ к соединению по умолчанию и \Illuminate\Database\DatabaseManager Нужно перечитать параметры конфигурации.

3

В config/database.php Я изменил соединение с БД по умолчанию с mysql на sqlite. Я удалил .env файл (фактически переименовал его) и создал файл sqlite с touch storage/database.sqlite, Миграция работала с sqlite.

Затем я переключил обратно config/database.php подключение к базе данных по умолчанию для MySQL и восстановил .env файл. Миграция работает с MySQL.

Это не имеет смысла, я думаю. Может быть, что-то было на стороне сервера.

-7
По вопросам рекламы [email protected]