Probléma
Ez egy meglehetősen gyakori probléma, amely megjelenik az új Laravel fejlesztők körében.
Sokan megpróbálták frissíteni .env fájljukat, csak hogy lássák, hogy az alkalmazás frissítésekor a .env konfigurációs értékek nem jelennek meg.
És ami még érdekesebb, hogy ez elég gyakran megjelenik a Laravel verzió frissítése után.
Például ez a .env fájlban van:
DB_DATABASE=laraveldb
DB_USERNAME=laraveluser
Ezután természetesen a config/database.php fájlban ez lenne:
'Mysql'=> [
' adatbázis '=>env(„DB_DATABASE”,'comb'),
'felhasználónév'=>env(„DB_USERNAME”,'comb'),
]
A forge itt az alapértelmezett értékeket jelenti. Ez azt jelenti, hogy ezeket az értékeket használjuk arra az esetre, ha nem adta meg DB_DATABASE és DB_USERNAME értékeket a .env fájlban. Ez az információ egy kicsit hasznos lesz.
Most honnan tudja, hogy megvan ez a konkrét probléma, ha a következő kivétellel találkozik:
PDOKivétel: SQLSTATE[HY000] [1045]Hozzáférés megtagadva felhasználó „Lar”@„localhost”
( segítségével Jelszó : NEM )
Ez egyértelműen azt mutatja, hogy a Laravel alkalmazás az alapértelmezett értéket húzza be a config/database.php fájlt, és nem a .env -ből.
Mielőtt bármi mást tenne, megpróbálhatja ellenőrizni ezt a problémát a php artisan tinker használatával is:
>>>env(„DB_DATABASE”)=> nulla
>>>getenv(„DB_DATABASE”)
=> hamis
>>>config(' adatbázis .csatlakozások.mysql. adatbázis ')
=>comb
>>>dd($ _ENV)
[]
Gyakran látni fogja, hogy a következő dolog végrehajtása sem változtat. A fejlesztők azonban megpróbálják tesztelni a konfigurációjukat egy teljesen új Laravel telepítés futtatásával, és csak a régi alkalmazás mappa másolásával. Nem futtatnak semmilyen zeneszerzőcsomag -telepítést, vagy bármi mást.
Hacsak nem Linuxot használ (egy kicsit később megmondom, miért), nem fog változást látni.
Megoldás
Mint mindig, sok mindent megtehet a probléma megoldása érdekében, de néhány közülük nagyobb valószínűséggel sikerül.
Törölje a konfigurációs gyorsítótárat
Először is, ha még nem tette meg, törölnie kell a konfigurációs gyorsítótárat, mielőtt bármi mást tehet.
Mivel a kódunk manapság nagyon sok könyvtárat használ, kénytelenek vagyunk gyorsítótárazni a dolgokat, hogy gyorsan hozzáférhessünk hozzájuk futás közben.
Személy szerint problémáim voltak ezzel Windows és Mac rendszeren, azonban észrevettem, hogy valamilyen oknál fogva Linuxon (Ubuntu) ezeket a konfigurációs fájlokat vagy valamilyen kampóval törlik, vagy egyáltalán nem tárolják gyorsítótárban, mert tudtam töltse be újra az alkalmazást új .env értékekkel anélkül, hogy a következőket tenné.
A következő parancsok futtatásával ürítse ki a konfigurációs gyorsítótárat:
php artisan config:gyorsítótárphp artisan config:egyértelmű
Ellenőrizze, hogy nincs -e üres hely a .env fájlban
A következő megoldás az, hogy üres helyek legyenek a .env fájlban. És ezt, ha a legtöbb ember kudarcot vall, és elkezdi tépni a haját.
Ezt nagyon könnyű kihagyni, de például az .env fájlban található valami ilyesmi:
SITE_NAME=Saját Laravel alkalmazásEz önmagában nem fog működni, mivel a szóközök megrongálják az .env fájlt.
Mit kell tennie, hogy az értékeket az alábbi idézetek közé csomagolja:
SITE_NAME=Saját Laravel alkalmazásEzúttal mindennek jól kell működnie.
Csak győződjön meg róla, hogy minden változtatáskor törölje a konfigurációs gyorsítótárat. Ezt ugyanúgy megtehetjük, mint korábban:
php artisan config:gyorsítótárphp artisan config:egyértelmű