A Laravel nem olvassa a .env fájlt a módosítás után

Laravel Is Not Reading



Probléma

Ez egy meglehetősen gyakori probléma, amely megjelenik az új Laravel fejlesztők körében.

Sokan megpróbálták frissíteni .env fájljukat, csak hogy lássák, hogy az alkalmazás frissítésekor a .env konfigurációs értékek nem jelennek meg.







És ami még érdekesebb, hogy ez elég gyakran megjelenik a Laravel verzió frissítése után.



Például ez a .env fájlban van:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Ezután természetesen a config/database.php fájlban ez lenne:





'Mysql'=> [
' adatbázis '=>env(„DB_DATABASE”,'comb'),
'felhasználónév'=>env(„DB_USERNAME”,'comb'),
]

A forge itt az alapértelmezett értékeket jelenti. Ez azt jelenti, hogy ezeket az értékeket használjuk arra az esetre, ha nem adta meg DB_DATABASE és DB_USERNAME értékeket a .env fájlban. Ez az információ egy kicsit hasznos lesz.

Most honnan tudja, hogy megvan ez a konkrét probléma, ha a következő kivétellel találkozik:



PDOKivétel: SQLSTATE[HY000] [1045]Hozzáférés megtagadva felhasználó „Lar”@„localhost”
( segítségével Jelszó : NEM )

Ez egyértelműen azt mutatja, hogy a Laravel alkalmazás az alapértelmezett értéket húzza be a config/database.php fájlt, és nem a .env -ből.

Mielőtt bármi mást tenne, megpróbálhatja ellenőrizni ezt a problémát a php artisan tinker használatával is:

>>>env(„DB_DATABASE”)
=> nulla
>>>getenv(„DB_DATABASE”)
=> hamis
>>>config(' adatbázis .csatlakozások.mysql. adatbázis ')
=>comb
>>>dd($ _ENV)
[]

Gyakran látni fogja, hogy a következő dolog végrehajtása sem változtat. A fejlesztők azonban megpróbálják tesztelni a konfigurációjukat egy teljesen új Laravel telepítés futtatásával, és csak a régi alkalmazás mappa másolásával. Nem futtatnak semmilyen zeneszerzőcsomag -telepítést, vagy bármi mást.

Hacsak nem Linuxot használ (egy kicsit később megmondom, miért), nem fog változást látni.

Megoldás

Mint mindig, sok mindent megtehet a probléma megoldása érdekében, de néhány közülük nagyobb valószínűséggel sikerül.

Törölje a konfigurációs gyorsítótárat

Először is, ha még nem tette meg, törölnie kell a konfigurációs gyorsítótárat, mielőtt bármi mást tehet.

Mivel a kódunk manapság nagyon sok könyvtárat használ, kénytelenek vagyunk gyorsítótárazni a dolgokat, hogy gyorsan hozzáférhessünk hozzájuk futás közben.

Személy szerint problémáim voltak ezzel Windows és Mac rendszeren, azonban észrevettem, hogy valamilyen oknál fogva Linuxon (Ubuntu) ezeket a konfigurációs fájlokat vagy valamilyen kampóval törlik, vagy egyáltalán nem tárolják gyorsítótárban, mert tudtam töltse be újra az alkalmazást új .env értékekkel anélkül, hogy a következőket tenné.

A következő parancsok futtatásával ürítse ki a konfigurációs gyorsítótárat:

php artisan config:gyorsítótár
php artisan config:egyértelmű

Ellenőrizze, hogy nincs -e üres hely a .env fájlban

A következő megoldás az, hogy üres helyek legyenek a .env fájlban. És ezt, ha a legtöbb ember kudarcot vall, és elkezdi tépni a haját.

Ezt nagyon könnyű kihagyni, de például az .env fájlban található valami ilyesmi:

SITE_NAME=Saját Laravel alkalmazás

Ez önmagában nem fog működni, mivel a szóközök megrongálják az .env fájlt.

Mit kell tennie, hogy az értékeket az alábbi idézetek közé csomagolja:

SITE_NAME=Saját Laravel alkalmazás

Ezúttal mindennek jól kell működnie.

Csak győződjön meg róla, hogy minden változtatáskor törölje a konfigurációs gyorsítótárat. Ezt ugyanúgy megtehetjük, mint korábban:

php artisan config:gyorsítótár
php artisan config:egyértelmű