laravel

Laravel läser inte .env-fil efter ändring

Laravel läser inte .env-fil efter ändring

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 = laraveldb
DB_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: cache
php 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-applikation

Detta 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: cache
php artisan config: clear
Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...