Laravel leser ikke .Env -fil etter endring

Laravel leser ikke .Env -fil etter endring

Problem

Denne hvis et ganske vanlig problem som dukker opp blant nye Laravel -utviklere.

Mange mennesker har prøvd å oppdatere sine .env fil bare for å se at når de oppdaterer søknaden sin, .Env -konfigurasjonsverdier vises ikke.

Og det som er mer interessant er at dette ganske ofte vil vises etter at du har oppgradert Laravel -versjonen din.

Så for eksempel ville du ha dette i din .Env -fil:

Db_database = laraveldb
DB_USERNAME = LARAVELUSER

Så naturlig, inne i konfigurasjonen/databasen.php -fil du vil ha dette:

'mysql' => [
'Database' => env ('db_database', 'lar'),
'brukernavn' => env ('db_usname', 'lar'),
]

Forge her står for standardverdier. Dette betyr at disse verdiene vil bli brukt i tilfelle du ikke har gitt din Db_database og Db_usname verdier i din .Env -fil. Denne informasjonen vil være nyttig i litt.

Hvordan du vet at du har fått dette spesifikke problemet, er hvis du støter på følgende unntak:

PDOException: SqlState [HY000] [1045] Access nektet for bruker 'lar'@'localhost'
(Bruker passord: Nei)

Dette viser tydelig at Laravel -applikasjonen din trekker inn standardverdien fra din konfigurasjon/database.PHP fil og ikke fra din .env .

Før du gjør noe annet, kan du også prøve å bekrefte dette problemet ved å bruke PHP Artisan Tinker også:

>>> env ('db_database')
=> null
>>> getEnv ('db_database')
=> falsk
>>> konfigurasjon ('database.Tilkoblinger.mysql.database ')
=> “Lar”
>>> DD ($ vala)
[]

Du vil ofte se at å gjøre følgende ting ikke vil gjøre en forskjell heller. Imidlertid prøver utviklere å teste konfigurasjonen deres ved å kjøre en helt ny Laravel -installasjon og bare kopiere den gamle app -mappen. De kjører ingen komponistpakkeinstallasjoner eller gjør noe annet.

Med mindre du er på Linux (jeg vil fortelle deg hvorfor litt senere), vil du ikke se noen endringer.

Løsning

Som alltid er det mange ting du kan gjøre for å prøve å løse dette problemet, men det er mer sannsynlig at noen få av dem lykkes.

Fjern konfigurasjonsbufferen din

For det første, hvis du ikke har det, må du fjerne konfigurasjonsbufferen din før du kan gjøre noe annet.

Fordi koden vår bruker så mange biblioteker i dag, blir vi tvunget til å cache ting for å gi rask tilgang til dem under kjøretid.

Jeg personlig hadde problemer med dette på Windows og Mac, men jeg la merke til at av en eller annen grunn, på Linux (Ubuntu), er disse konfigurasjonsfilene enten ryddet med en slags krok, eller de blir ikke hurtigbufret i det hele tatt, fordi jeg var i stand til å gjøre det Last inn søknaden på nytt med ny .Env -verdier uten å gjøre følgende.

Forsikre deg om at du rydder konfigurasjonsbufferen din ved å kjøre følgende kommandoer:

PHP Artisan Config: Cache
PHP Artisan Config: Clear

Sjekk for tomme mellomrom i din .Env -fil

Den aller neste løsningen er når det gjelder å ha hvite rom inne i din .Env -fil. Og denne hvis de fleste mislykkes og begynner å rive håret.

Det er veldig enkelt å savne dette, men som et eksempel hva du kan ha i deg .Env -fil er noe slikt:

SITE_NAME = Mitt Laravel -applikasjon

Dette alene vil ikke fungere siden hvite rom vil ødelegge .Env -fil.

Det du trenger å gjøre er å pakke inn verdiene dine i sitatene som dette:

Site_name = ”min laravel -applikasjon”

Denne gangen skal alt fungere helt fint.

Bare sørg for å tømme konfigurasjonsbufferen din hver gang du gjør en endring. Vi kan gjøre dette det samme som før:

PHP Artisan Config: Cache
PHP Artisan Config: Clear