Laravel no llegeix el fitxer .env després del canvi

Laravel Is Not Reading



Problema

Aquest és un problema bastant comú que apareix entre els nous desenvolupadors de Laravel.

Molta gent ha intentat actualitzar el fitxer .env només per comprovar que quan actualitzen la seva aplicació no apareixen els valors de configuració .env.







I el que és més interessant és que sovint apareixerà després d’actualitzar la versió de Laravel.



Per exemple, ho tindríeu al fitxer .env:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Aleshores, naturalment, dins del fitxer config / database.php tindríeu això:





'MySQL'=> [
' base de dades '=>env('DB_DATABASE','cuixa'),
'Nom d'usuari'=>env('DB_USERNAME','cuixa'),
]

forge aquí significa valors per defecte. Això vol dir que s’utilitzaran aquests valors en cas que no l’hagueu proporcionat DB_DATABASE i DB_USERNAME valors dins del fitxer .env. Aquesta informació us serà útil una mica.

Ara, com sabeu que teniu aquest problema específic és si teniu l'excepció següent:



PDOException: SQLSTATE[HY000] [1045]Accés denegat per a usuari 'Lar' @ 'localhost'
( utilitzant contrasenya : NO )

Això mostra clarament que la vostra aplicació Laravel extreu el valor per defecte del vostre config / database.php i no del vostre fitxer .env.

Abans de fer qualsevol altra cosa, també podeu provar de verificar aquest problema amb PHP tinker artesanal també:

>>>env('DB_DATABASE')
=> nul
>>>getenv('DB_DATABASE')
=> fals
>>>config(' base de dades .connections.mysql. base de dades ')
=>cuixa
>>>dd($ _ENV)
[]

Sovint veureu que fer el següent tampoc no farà cap diferència. No obstant això, els desenvolupadors intenten provar la seva configuració executant una instal·lació Laravel completament nova i simplement copiant la carpeta antiga de l'aplicació. No executen cap instal·lació de paquets de compositor ni fan res més.

Tret que estigueu a Linux (us explicaré per què una mica més tard), no veureu cap canvi.

Solució

Com sempre, hi ha moltes coses que podeu fer per intentar solucionar aquest problema, però és probable que algunes d’elles tinguin èxit.

Esborreu la memòria cau de configuració

En primer lloc, si no ho heu fet, heu d'esborrar la memòria cau de configuració abans de poder fer qualsevol altra cosa.

Com que el nostre codi fa servir tantes biblioteques en l'actualitat, ens veiem obligats a desar coses a la memòria cau per accedir-hi ràpidament durant el temps d'execució.

Personalment, vaig tenir problemes amb això a Windows i Mac, però em vaig adonar que, per alguna raó, a Linux (Ubuntu) aquests fitxers de configuració s’esborren amb algun tipus de ganxo o no s’emmagatzemen en cap memòria cau, perquè vaig poder torneu a carregar l'aplicació amb nous valors .env sense fer el següent.

Assegureu-vos que esborreu la memòria cau de configuració executant les ordres següents:

configuració artesanal de PHP:memòria cau
configuració artesanal de PHP:clar

Comproveu si hi ha espais buits al fitxer .env

La següent solució consisteix a tenir espais en blanc dins del fitxer .env. I aquest si on la majoria de la gent falla i comença a arrencar-se els cabells.

És molt fàcil perdre-ho, però com a exemple el que podeu tenir al fitxer .env és una cosa així:

NOM DEL LLOC=La meva sol·licitud Laravel

Això només no funcionarà, ja que els espais en blanc corrompran el fitxer .env.

El que heu de fer és incloure els vostres valors dins de les cometes així:

NOM DEL LLOC=La meva sol·licitud Laravel

Aquesta vegada tot hauria de funcionar bé.

Assegureu-vos d'esborrar la memòria cau de configuració cada vegada que feu un canvi. Podem fer el mateix que abans:

configuració artesanal de PHP:memòria cau
configuració artesanal de PHP:clar