laravel

Laravel leser ikke .env-fil etter endring

Laravel leser ikke .env-fil etter endring

Problem

Dette 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 applikasjonen, .env-konfigurasjonsverdier vises ikke.

Og det som er mer interessant er at dette ofte vil dukke opp etter at du har oppgradert Laravel-versjonen.

Så for eksempel vil du ha dette i deg .env-fil:

DB_DATABASE = laraveldb
DB_USERNAME = storbruker

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

'mysql' => [
'database' => env ('DB_DATABASE', 'lar'),
'brukernavn' => env ('DB_USERNAME', 'lar'),
]

forge her står for standardverdier. Dette betyr at disse verdiene vil bli brukt i tilfelle du ikke har oppgitt dine DB_DATABASE og DB_USERNAME verdier i din .env-fil. Denne informasjonen vil være nyttig om litt.

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

PDOException: SQLSTATE [HY000] [1045] Tilgang nektet for brukeren 'lar' @ 'localhost'
(bruker passord: NEI)

Dette viser tydelig at Laravel-applikasjonen henter inn standardverdien fra din config / database.php filen 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')
=> usann
>>> config ('database.tilkoblinger.mysql.database ')
=> “Lar”
>>> dd ($ _ ENV)
[]

Du vil ofte se at det å gjøre følgende vil ikke utgjøre noen forskjell heller. Imidlertid prøver utviklere å teste konfigurasjonen ved å kjøre en helt ny Laravel-installasjon og bare kopiere den gamle appmappen. De kjører ikke noen komponentpakkeinstallasjoner 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 noen få av dem er mer sannsynlig å lykkes.

Tøm konfigurasjonsbufferen

Først og fremst, hvis du ikke har det, må du tømme konfigurasjonsbufferen før du kan gjøre noe annet.

Fordi koden vår bruker så mange biblioteker i dag, er vi tvunget til å cache ting for å gi rask tilgang til dem i løpetid.

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

Forsikre deg om at du tømmer konfigurasjonsbufferen ved å kjøre følgende kommandoer:

php artisan config: cache
php artisan config: clear

Se etter tomme mellomrom i din .env-fil

Den neste løsningen er når det gjelder å ha hvite mellomrom inni deg .env-fil. Og denne hvis der de fleste mislykkes og begynner å rive håret.

Det er veldig lett å gå glipp av dette, men som et eksempel hva du kan ha i deg .env-fil er omtrent slik:

SITE_NAME = Min Laravel-applikasjon

Dette alene fungerer ikke siden hvite mellomrom vil ødelegge .env-fil.

Det du trenger å gjøre er å pakke inn verdiene dine i anførselstegnene slik:

SITE_NAME = ”Min Laravel-applikasjon”

Denne gangen skal alt fungere helt fint.

Bare vær sikker på å tømme konfigurasjonsbufferen hver gang du gjør en endring. Vi kan gjøre det samme som før:

php artisan config: cache
php artisan config: clear
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...
Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...