Laravel nečíta súbor .env po zmene

Laravel Is Not Reading



Problém

Toto je pomerne bežný problém, ktorý sa prejavuje medzi novými vývojármi Laravelu.

Mnoho ľudí sa pokúšalo aktualizovať svoj súbor .env, aby videli, že keď obnovujú svoju aplikáciu, konfiguračné hodnoty .env sa nezobrazujú.







A čo je zaujímavejšie, pomerne často sa to prejaví po inovácii verzie Laravel.



Napríklad v súbore .env by ste mali toto:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Potom by ste v súbore config/database.php prirodzene mali toto:





'Mysql'=> [
' databázy '=>env(„DB_DATABASE“,'stehno'),
„Používateľské meno“=>env(„DB_USERNAME“,'stehno'),
]

forge tu znamená predvolené hodnoty. To znamená, že tieto hodnoty budú použité v prípade, že ste neposkytli svoje DB_DATABASE a DB_USERNAME hodnoty vo vašom súbore .env. Tieto informácie budú o chvíľu užitočné.

Teraz viete, že máte tento konkrétny problém, ak narazíte na nasledujúcu výnimku:



Výnimka PDO: SQLSTATE[HY000] [1045]Prístup odmietnutý pre používateľ „Lar“@„localhost“
( použitím heslo : NIE )

Toto je dôkazom toho, že vaša aplikácia Laravel získava predvolenú hodnotu z vášho súboru config/database.php súbor a nie z vášho súboru .env.

Predtým, ako urobíte čokoľvek iné, môžete sa tiež pokúsiť overiť tento problém pomocou php remeselníka:

>>>env(„DB_DATABASE“)
=> nulový
>>>getenv(„DB_DATABASE“)
=> falošný
>>>konfigur(' databázy .connections.mysql. databázy ')
=>stehno
>>>dd($ _ENV)
[]

Často uvidíte, že ani nasledujúca vec nič nezmení. Vývojári sa však pokúšajú otestovať svoju konfiguráciu spustením úplne novej inštalácie Laravel a jednoduchým kopírovaním starého priečinka s aplikáciami. Nespúšťajú žiadne inštalácie skladateľských balíkov ani nerobia nič iné.

Pokiaľ nie ste v systéme Linux (o niečo neskôr vám poviem prečo), neuvidíte žiadne zmeny.

Riešenie

Ako vždy, existuje mnoho vecí, ktoré môžete urobiť, aby ste sa pokúsili vyriešiť tento problém, ale niektoré z nich majú väčšiu pravdepodobnosť úspechu.

Vymažte vyrovnávaciu pamäť konfigurácie

Po prvé, ak ste to neurobili, musíte vymazať vyrovnávaciu pamäť konfigurácie, aby ste mohli robiť čokoľvek iné.

Pretože náš kód v dnešnej dobe používa toľko knižníc, sme nútení ukladať veci do pamäte cache, aby sme k nim mali rýchly prístup počas behu.

Osobne som s tým mal problémy v systémoch Windows a Mac, všimol som si však, že z nejakého dôvodu sú v systéme Linux (Ubuntu) tieto konfiguračné súbory buď vymazané pomocou nejakého háčika, alebo sa vôbec neukladajú do vyrovnávacej pamäte, pretože som dokázal znova načítajte aplikáciu s novými hodnotami .env bez toho, aby ste urobili nasledovné.

Uistite sa, že vymažete vyrovnávaciu pamäť konfigurácie spustením nasledujúcich príkazov:

konfigurácia php remeselníka:cache
konfigurácia php remeselníka:jasný

Vyhľadajte v súbore .env prázdne miesta

Úplne ďalšie riešenie je z hľadiska medzier vo vašom súbore .env. A tento, ak väčšina ľudí zlyhá a začne si trhať vlasy.

Je veľmi ľahké to prehliadnuť, ale ako príklad toho, čo by ste mohli mať vo svojom súbore .env, je niečo také:

NÁZOV SIETE=Moja aplikácia Laravel

To nebude fungovať, pretože medzery poškodia súbor .env.

Čo musíte urobiť, je zabaliť svoje hodnoty do úvodzoviek takto:

NÁZOV SIETE=Moja aplikácia Laravel

Tentoraz by všetko malo fungovať dobre.

Nezabudnite pri každej zmene vymazať vyrovnávaciu pamäť konfigurácie. Môžeme to urobiť rovnako ako predtým:

konfigurácia php remeselníka:cache
konfigurácia php remeselníka:jasný