Problem
Denne hvis et ret almindeligt problem, der dukker op 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, .env-konfigurationsværdier vises ikke.
Og hvad der er mere interessant er, at dette ofte vises, når du opgraderer din Laravel-version.
Så for eksempel ville du have dette i din .env-fil:
DB_DATABASE = laraveldbDB_USERNAME = laravbruger
Derefter naturligt inde i konfigurationen / databasen.php-fil, du ville have denne:
'mysql' => ['database' => env ('DB_DATABASE', 'lar'),
'brugernavn' => env ('DB_USERNAME', 'lar'),
]
smed her står for standardværdier. Dette betyder, at disse værdier vil blive brugt, hvis du ikke har angivet din DB_DATABASE og DB_USERNAME værdier inde i din .env-fil. Disse oplysninger vil komme nyttige om lidt.
Hvordan du ved nu, at du har dette specifikke problem, er, hvis du løber ind i følgende undtagelse:
PDOException: SQLSTATE [HY000] [1045] Adgang nægtet for bruger 'lar' @ 'localhost'(ved hjælp af adgangskode: NEJ)
Dette viser tydeligt, at din Laravel-applikation henter standardværdien fra din config / database.php fil og ikke fra din .env .
Før du gør noget andet, kan du også prøve at bekræfte dette problem ved hjælp af php håndværker tinker:
>>> env ('DB_DATABASE')=> null
>>> getenv ('DB_DATABASE')
=> falsk
>>> config ('database.forbindelser.mysql.database ')
=> “Lar”
>>> dd ($ _ ENV)
[]
Du vil ofte se, at det ikke gør nogen forskel at gøre følgende ting. Imidlertid prøver udviklere at teste deres konfiguration ved at køre en helt ny Laravel-installation og bare kopiere den gamle app-mappe. De kører ikke nogen komponistpakkeinstallationer eller gør noget andet.
Medmindre du er på Linux (jeg vil fortælle dig hvorfor lidt senere), vil du ikke se nogen ændringer.
Opløsning
Som altid er der mange ting, du kan gøre for at prøve at løse dette problem, men nogle få af dem er mere tilbøjelige til at få succes.
Ryd din konfigurationscache
Først og fremmest, hvis du ikke har det, skal du rydde din konfigurationscache, 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 give hurtig adgang til dem under runtime.
Jeg havde personligt problemer med dette på Windows og Mac, men jeg bemærkede, at af en eller anden grund, på Linux (Ubuntu), ryddes disse konfigurationsfiler enten med en slags krog, eller de caches slet ikke, fordi jeg var i stand til at genindlæs applikationen med ny .env-værdier uden at gøre følgende.
Sørg for at rydde din konfigurationscache ved at køre følgende kommandoer:
php håndværkskonfiguration: cachephp artisan config: klar
Kontroller, om der er tomme rum i dit .env-fil
Den næste løsning er med hensyn til at have hvide rum inde i din .env-fil. Og denne, hvis de fleste mennesker fejler og begynder at rive deres hår.
Det er meget let at gå glip af dette, men som et eksempel, hvad du kunne have i din .env-fil er sådan noget:
SITE_NAME = Min Laravel-applikationDette alene fungerer ikke, da hvide rum vil ødelægge .env-fil.
Hvad du skal gøre er at pakke dine værdier ind i citaterne på denne måde:
SITE_NAME = ”Min Laravel-applikation”Denne gang skal alt fungere fint.
Bare sørg for at rydde din konfigurationscache hver gang du foretager en ændring. Vi kan gøre det samme som før:
php håndværkskonfiguration: cachephp artisan config: klar