Laravel läser inte .env -fil efter ändring

Laravel Is Not Reading



Problem

Den här om ett ganska vanligt problem som dyker upp bland nya Laravel -utvecklare.

Många har försökt uppdatera sin .env -fil bara för att se att när de uppdaterar sin applikation visas inte .env -konfigurationsvärdena.







Och det som är mer intressant är att detta ofta kommer att dyka upp efter att du har uppgraderat din Laravel -version.



Så till exempel skulle du ha detta i din .env -fil:



DB_DATABASE=laraveldb
DB_USERNAME=laravelanvändare

Sedan skulle du naturligtvis inne i filen config/database.php ha detta:





'Mysql'=> [
' databas '=>env('DB_DATABASE','lår'),
'Användarnamn'=>env('DB_USERNAME','lår'),
]

forge här står för standardvärden. Det betyder att dessa värden kommer att användas om du inte har angett din DB_DATABASE och DB_USERNAME värden i din .env -fil. Denna information kommer att vara till hjälp om lite.

Hur vet du att du har detta specifika problem om du stöter på följande undantag:



PDOException: SQLSTATE[HY000] [1045]Åtkomst nekad för användare 'Lar'@'localhost'
( använder sig av Lösenord : NEJ )

Detta visar tydligt att din Laravel -applikation drar in standardvärdet från din config/database.php filen och inte från din .env.

Innan du gör något annat kan du också försöka verifiera problemet med php artisan tinker:

>>>env('DB_DATABASE')
=> null
>>>getenv('DB_DATABASE')
=> falsk
>>>konfigur(' databas .connections.mysql. databas ')
=>lår
>>>dd($ _ENV)
[]

Du kommer ofta att se att det att göra följande inte heller kommer att göra någon skillnad. Utvecklare försöker dock testa sin konfiguration genom att köra en helt ny Laravel -installation och bara kopiera den gamla appmappen. De kör inga kompositpaketinstallationer eller gör något annat.

Om du inte använder Linux (jag kommer att berätta varför lite senare) kommer du inte att se några ändringar.

Lösning

Som alltid finns det många saker du kan göra för att försöka lösa detta problem, men några av dem är mer benägna att lyckas.

Rensa din config -cache

Först och främst, om du inte har gjort det, måste du rensa din config -cache innan du kan göra något annat.

Eftersom vår kod använder så många bibliotek nuförtiden tvingas vi cacha saker för att snabbt komma åt dem under körning.

Jag hade personligen problem med detta på Windows och Mac, men jag märkte att av någon anledning, på Linux (Ubuntu) rensas dessa konfigurationsfiler antingen med någon form av krok eller så cachas de inte alls, eftersom jag kunde ladda om programmet med nya .env -värden utan att göra följande.

Se till att du rensar din config -cache genom att köra följande kommandon:

php artisan config:cache
php artisan config:klar

Sök efter tomma utrymmen i din .env -fil

Allra nästa lösning är när det gäller att ha vita mellanslag inuti .env -filen. Och den här om där de flesta misslyckas och börjar riva håret.

Det är mycket lätt att missa detta, men som ett exempel kan du ha i din .env -fil ungefär så här:

SIDNAMN=Min Laravel -applikation

Det enda fungerar inte eftersom vita blankstationer kommer att skada .env -filen.

Vad du behöver göra är att linda dina värden in i citaten så här:

SIDNAMN=Min Laravel -applikation

Den här gången borde allt fungera bra.

Se bara till att rensa din konfigurationscache varje gång du gör en ändring. Vi kan göra detta på samma sätt som tidigare:

php artisan config:cache
php artisan config:klar