Laravel не читает файл .env после изменения

Laravel Is Not Reading



Проблема

Это довольно распространенная проблема, которая возникает среди новых разработчиков Laravel.

Многие люди пытались обновить свой файл .env только для того, чтобы убедиться, что при обновлении своего приложения значения конфигурации .env не отображаются.







И что более интересно, это довольно часто появляется после обновления версии Laravel.



Так, например, у вас будет это в вашем файле .env:



DB_DATABASEзнак равноlaraveldb
DB_USERNAMEзнак равноларавелизатор

Тогда, естественно, внутри файла config / database.php у вас будет следующее:





'Mysql'=> [
' база данных '=>env(«DB_DATABASE»,'бедро'),
'имя пользователя'=>env(«DB_USERNAME»,'бедро'),
]

Forge здесь означает значения по умолчанию. Это означает, что эти значения будут использоваться, если вы не предоставили DB_DATABASE а также DB_USERNAME значения внутри вашего .env файла. Эта информация вам немного пригодится.

Теперь вы можете узнать об этой конкретной проблеме, если столкнетесь со следующим исключением:



PDOException: SQLSTATE[HY000] [1045]Доступ запрещен для Пользователь ‘Lar’ @ ’localhost’
( с использованием пароль : НЕТ )

Это ясно показывает, что ваше приложение Laravel получает значение по умолчанию из вашего config / database.php файл, а не из вашего .env.

Прежде чем делать что-либо еще, вы также можете попробовать проверить эту проблему с помощью php artisan tinker:

>>>env(«DB_DATABASE»)
=> нулевой
>>>getenv(«DB_DATABASE»)
=> ложный
>>>config(' база данных .connections.mysql. база данных ')
=>бедро
>>>дд($ _ENV)
[]

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

Если вы не используете Linux (я расскажу почему, чуть позже), вы не увидите никаких изменений.

Решение

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

Очистите кеш конфигурации

Во-первых, если вы этого не сделали, вам необходимо очистить кеш конфигурации, прежде чем вы сможете делать что-либо еще.

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

У меня лично были проблемы с этим в Windows и Mac, однако я заметил, что по какой-то причине в Linux (Ubuntu) эти файлы конфигурации либо очищаются с помощью какой-то ловушки, либо они вообще не кэшируются, потому что я смог перезагрузите приложение с новыми значениями .env, не выполняя следующих действий.

Убедитесь, что вы очистили кеш конфигурации, выполнив следующие команды:

Конфигурация php artisan:тайник
Конфигурация php artisan:Чисто

Проверьте наличие пустых мест в вашем .env файле

Следующее решение - наличие пробелов внутри вашего .env файла. И в этом случае большинство людей терпят неудачу и начинают рвать волосы.

Это очень легко пропустить, но, например, в вашем файле .env может быть что-то вроде этого:

НАЗВАНИЕ САЙТАзнак равноМое приложение Laravel

Само по себе это не сработает, поскольку пробелы могут повредить файл .env.

Что вам нужно сделать, так это заключить ваши значения в кавычки следующим образом:

НАЗВАНИЕ САЙТАзнак равноМое приложение Laravel

На этот раз все должно работать нормально.

Просто не забывайте очищать кеш конфигурации каждый раз, когда вносите изменения. Мы можем сделать это так же, как и раньше:

Конфигурация php artisan:тайник
Конфигурация php artisan:Чисто