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

Laravel Is Not Reading



Проблем

Това е доста често срещан проблем, който се появява сред новите разработчици на Laravel.

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







И по -интересното е, че доста често това ще се показва, след като надстроите версията на Laravel.



Така например, бихте имали това във вашия .env файл:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Тогава естествено, във файла 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 файл, е нещо подобно:

SITE_NAME=Моето приложение Laravel

Само това няма да работи, тъй като празните пространства ще повредят .env файла.

Това, което трябва да направите, е да увиете стойностите си в кавичките по следния начин:

SITE_NAME=Моето приложение Laravel

Този път всичко трябва да работи добре.

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

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