Laravel læser ikke .env -fil efter ændring

Laravel Is Not Reading



Problem

Denne ene hvis et ret almindeligt problem, der viser sig blandt nye Laravel -udviklere.

Mange mennesker har forsøgt at opdatere deres .env -fil bare for at se, at når de opdaterer deres applikation, vises .env -konfigurationsværdierne ikke.







Og hvad der er mere interessant er, at det ofte vises, når du har opgraderet din Laravel -version.



Så for eksempel ville du have dette i din .env -fil:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Så ville du naturligvis inde i filen config/database.php have dette:





'Mysql'=> [
' database '=>env('DB_DATABASE','lår'),
'Brugernavn'=>env('DB_USERNAME','lår'),
]

smede her står for standardværdier. Det betyder, at disse værdier vil blive brugt, hvis du ikke har givet din DB_DATABASE og DB_USERNAME værdier inde i din .env -fil. Disse oplysninger vil være nyttige om lidt.

Nu ved du, at du har dette specifikke problem, hvis du støder på følgende undtagelse:



PDOException: SQLSTATE[HY000] [1045]Adgang nægtet for bruger 'Lar'@'localhost'
( ved brug af adgangskode : INGEN )

Dette viser klart, at din Laravel -applikation henter standardværdien fra din config/database.php fil og ikke fra din .env.

Inden du gør noget andet, kan du også prøve at kontrollere dette problem ved hjælp af php artisan tinker også:

>>>env('DB_DATABASE')
=> nul
>>>getenv('DB_DATABASE')
=> falsk
>>>konfiguration(' database .connections.mysql. database ')
=>lår
>>>dd($ _ENV)
[]

Du vil ofte se, at det at gøre følgende heller ikke vil gøre en forskel. Udviklere forsøger dog at teste deres konfiguration ved at køre en helt ny Laravel -installation og bare kopiere den gamle appmappe. De kører ingen komponentpakkeinstallationer eller laver noget andet.

Medmindre du er på Linux (jeg vil fortælle dig hvorfor lidt senere), vil du ikke se nogen ændringer.

Løsning

Som altid er der mange ting, du kan gøre for at forsøge at løse dette problem, men nogle få af dem er mere tilbøjelige til at lykkes.

Ryd din config -cache

For det første, hvis du ikke har gjort det, skal du rydde din config -cache, før du kan gøre noget andet.

Fordi vores kode bruger så mange biblioteker i dag, er vi tvunget til at cache ting for at få hurtig adgang til dem under runtime.

Jeg havde personligt problemer med dette på Windows og Mac, men jeg bemærkede, at disse konfigurationsfiler af en eller anden grund enten blev ryddet med en slags krog, eller at de slet ikke blev cachelagret, fordi jeg kunne genindlæs applikationen med nye .env -værdier uden at gøre følgende.

Sørg for at rydde din config -cache ved at køre følgende kommandoer:

php håndværkerkonfiguration:cache
php håndværkerkonfiguration:klar

Kontroller, om der er tomme mellemrum i din .env -fil

Den allerførste løsning er med hensyn til at have hvide mellemrum inde i din .env -fil. Og denne her hvis de fleste mennesker fejler og begynder at rive håret.

Det er meget let at gå glip af dette, men som et eksempel kan det være, du kan have i din .env -fil:

SIDE NAVN=Min Laravel -applikation

Dette alene virker ikke, da hvide mellemrum vil ødelægge .env -filen.

Hvad du skal gøre er at pakke dine værdier ind i citaterne sådan:

SIDE NAVN=Min Laravel -applikation

Denne gang skulle alt fungere fint.

Bare sørg for at rydde din config -cache, hver gang du foretager en ændring. Vi kan gøre det samme som før:

php håndværkerkonfiguration:cache
php håndværkerkonfiguration:klar