Laravel po spremembi ne bere datoteke .env

Laravel Is Not Reading

Problem

To je precej pogosta težava, ki se pojavi med novimi razvijalci Laravela.

Veliko ljudi je poskušalo posodobiti svojo datoteko .env samo zato, da bi videli, da se pri osvežitvi aplikacije konfiguracijske vrednosti .env ne prikažejo.



Še bolj zanimivo pa je, da se bo to pogosto pokazalo, ko nadgradite različico Laravel.



Tako bi na primer v datoteki .env imeli to:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Seveda bi v datoteki config/database.php imeli to:

'Mysql'=> [
' zbirko podatkov '=>env('DB_DATABASE','tesno'),
'Uporabniško ime'=>env(»DB_USERNAME«,'tesno'),
]

forge tukaj pomeni privzete vrednosti. To pomeni, da bodo te vrednosti uporabljene, če niste posredovali svojih DB_DATABASE in DB_USERNAME vrednosti v datoteki .env. Ti podatki bodo kmalu v pomoč.

Zdaj veste, da imate to posebno težavo, če naletite na naslednjo izjemo:



PDOException: SQLSTATE[HY000] [1045]Dostop zavrnjen za uporabnik 'Lar'@'localhost'
( z uporabo geslo : NE )

To jasno kaže, da vaša aplikacija Laravel potegne privzeto vrednost iz vašega config/database.php datoteko in ne iz vašega .env.

Preden naredite karkoli drugega, lahko poskusite to težavo preveriti tudi s pomočjo php artisan tinkerja:

>>>env('DB_DATABASE')
=> nič
>>>getenv('DB_DATABASE')
=> napačno
>>>config(' zbirko podatkov .connections.mysql. zbirko podatkov ')
=>tesno
>>>dd($ _ENV)
[]

Pogosto boste videli, da tudi to, kar počnete, ne bo spremenilo. Vendar pa razvijalci poskušajo preizkusiti svojo konfiguracijo tako, da zaženejo popolnoma novo namestitev programa Laravel in preprosto kopirajo staro mapo aplikacije. Ne izvajajo nobenih namestitev skladateljskih paketov ali počnejo kaj drugega.

Če ne uporabljate Linuxa (kasneje vam bom povedal, zakaj), ne boste videli nobenih sprememb.

Rešitev

Kot vedno lahko storite veliko stvari, da poskusite rešiti to težavo, vendar bo nekaj od njih bolj verjetno uspelo.

Počistite predpomnilnik konfiguracije

Najprej, če niste, morate počistiti predpomnilnik konfiguracije, preden lahko storite kaj drugega.

Ker naša koda danes uporablja toliko knjižnic, smo primorani predpomniti stvari, da imamo hiter dostop do njih med izvajanjem.

Osebno sem imel težave s tem v operacijskih sistemih Windows in Mac, vendar sem opazil, da se iz nekega razloga v Linuxu (Ubuntu) te konfiguracijske datoteke počistijo z nekakšno kljuko ali pa se sploh ne predpomnijo, ker sem lahko znova naložite aplikacijo z novimi vrednostmi .env, ne da bi naredili naslednje.

Počistite predpomnilnik konfiguracije z izvajanjem naslednjih ukazov:

php artisan config:predpomnilnik
php artisan config:jasno

Preverite, ali so v datoteki .env prazni prostori

Naslednja rešitev je, da imate v svoji datoteki .env presledke. In ta, če večina ljudi ne uspe in si začne trgati lase.

To je zelo enostavno zamuditi, vendar je na primer v datoteki .env nekaj takega:

SITE_NAME=Moja aplikacija Laravel

Samo to ne bo delovalo, saj bodo presledki poškodovali datoteko .env.

Kar morate storiti, je, da svoje vrednosti zavijete v narekovaje tako:

SITE_NAME=Moja aplikacija Laravel

Tokrat bi moralo vse delovati v redu.

Ob vsaki spremembi počistite predpomnilnik konfiguracije. To lahko storimo enako kot prej:

php artisan config:predpomnilnik
php artisan config:jasno