Мой Laravel 5 работал нормально, пока база данных не была настроена, затем обнаружил эту ошибку:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
В некоторых исследованиях кажется, что я настроил доступ к MySQL слишком поздно, поэтому мне нужно перезапустить сервер, чтобы получить правильные переменные среды. Ну, я использую общий сервер Dreamhost и просто не могу этого сделать.
Как мне решить эту проблему?
Спасибо
Если вы бежали php artisan config:cache
на вашем сервере, тогда ваше приложение Laravel может кэшировать устаревшие параметры конфигурации, которые вы указали в .env
файл.
Бежать php artisan config:clear
чтобы исправить это.
Возможно, ваши переменные конфигурации кэшированы. Проверьте свой config/app.php
а также ваш .env
файл потом попробуй
php artisan cache:clear
в командной строке.
В случае, если на этот вопрос натолкнется кто-то, кто не сможет перезагрузить свой веб-сервер (долго выполняемая консольная команда, например, бегущий по очереди) или ему нужно будет перезагрузить промежуточный запрос файла .env, я нашел способ правильно перезагрузить переменные .env в laravel 5.
use Dotenv;
use InvalidArgumentException;
try {
Dotenv::makeMutable();
Dotenv::load(app()->environmentPath(), app()->environmentFile());
Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
//
}
Краткое решение:
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
Нужно перечитать параметры конфигурации.
В config/database.php
Я изменил соединение с БД по умолчанию с mysql на sqlite. Я удалил .env
файл (фактически переименовал его) и создал файл sqlite с touch storage/database.sqlite
, Миграция работала с sqlite.
Затем я переключил обратно config/database.php
подключение к базе данных по умолчанию для MySQL и восстановил .env
файл. Миграция работает с MySQL.
Это не имеет смысла, я думаю. Может быть, что-то было на стороне сервера.