Problem
Den här om en ganska vanlig fråga som dyker upp bland nya Laravel-utvecklare.
Många har försökt uppdatera sina .env-fil bara för att se att när de uppdaterar sin applikation, .env-konfigurationsvärden visas inte.
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 det här i din .env-fil:
DB_DATABASE = laraveldbDB_USERNAME = laraväljare
Sedan naturligtvis inuti konfigurationen / databasen.php-fil skulle du ha den här:
'mysql' => ['databas' => env ('DB_DATABASE', 'lar'),
'användarnamn' => env ('DB_USERNAME', 'lar'),
]
Forge här står för standardvärden. Detta innebär att dessa värden kommer att användas om du inte har angett din DB_DATABAS och DB_USERNAME värden i din .env-fil. Denna information kommer att vara till hjälp om lite.
Nu, hur du vet att du har det här specifika problemet är om du stöter på följande undantag:
PDOException: SQLSTATE [HY000] [1045] Åtkomst nekad för användaren 'lar' @ 'localhost'(med lösenord: NEJ)
Detta visar tydligt att din Laravel-applikation drar in standardvärdet från din konfiguration / databas.php filen och inte från din .env .
Innan du gör något annat kan du också försöka verifiera det här problemet med php artisan tinker också:
>>> env ('DB_DATABASE')=> null
>>> getenv ('DB_DATABASE')
=> falskt
>>> config ('databas.anslutningar.mysql.databas')
=> “Lar”
>>> dd ($ _ ENV)
[]
Du kommer ofta att se att det inte gör någon skillnad att göra följande. 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 inte några kompositörspaketinstallationer eller gör något annat.
Om du inte använder Linux (jag berättar 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 konfigurationscache
Först och främst, om du inte har det, måste du rensa din konfigurationscache innan du kan göra något annat.
Eftersom vår kod använder så många bibliotek idag är vi tvungna att cacha saker för att snabbt få åtkomst till 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, för jag kunde ladda om programmet med nytt .env-värden utan att göra följande.
Se till att du rensar din konfigurationscache genom att köra följande kommandon:
php artisan config: cachephp artisan config: clear
Sök efter tomma utrymmen i din .env-fil
Den nästa lösningen är när det gäller att ha vita utrymmen inuti din .env-fil. Och den här om där de flesta misslyckas och börjar riva håret.
Det är väldigt lätt att missa detta men som ett exempel vad du kan ha i din .env-fil är ungefär så här:
SITE_NAME = Min Laravel-applikationDetta ensamma fungerar inte eftersom vita utrymmen kommer att förstöra .env-fil.
Vad du behöver göra är att sätta in dina värden i citaten så här:
SITE_NAME = ”Min Laravel-applikation”Den här gången ska 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: cachephp artisan config: clear