Probléma
Ez egy meglehetősen gyakori probléma, amely megjelenik az új Laravel fejlesztők körében.
Nagyon sokan próbálták frissíteni .env fájlt csak azért látni, hogy amikor frissítik alkalmazásukat, a .Az env config értékei nem jelennek meg.
És ami még érdekesebb, hogy ez elég gyakran a Laravel verzió frissítése után jelenik meg.
Tehát például ez lenne a saját .env fájl:
DB_DATABASE = laraveldbDB_USERNAME = laraveluser
Majd természetesen a config / adatbázis belsejében.php fájl ez lenne:
'mysql' => ['database' => env ('DB_DATABASE', 'lar'),
'felhasználónév' => env ('DB_USERNAME', 'lar'),
]
a forge itt az alapértelmezett értékeket jelenti. Ez azt jelenti, hogy ezeket az értékeket akkor fogjuk használni, ha nem adta meg az DB_DATABASE és DB_USERNAME értékek a te .env fájl. Ez az információ egy kicsit hasznos lesz.
Most, hogy honnan tudja, hogy megvan ez a probléma, ha a következő kivételbe ütközik:
PDOKivétel: SQLSTATE [HY000] [1045] Hozzáférés megtagadva a „lar” @ „localhost” felhasználóhoz(jelszóval: NO)
Ez egyértelműen azt mutatja, hogy a Laravel alkalmazás az alapértelmezett értéket húzza le az Önről config / adatbázis.php fájlt, és nem a .env .
Mielőtt bármi mást csinálna, megpróbálhatja ellenőrizni ezt a problémát az php kézműves bütykök használatával is:
>>> env ('DB_DATABASE')=> null
>>> getenv ('DB_DATABASE')
=> hamis
>>> config ('adatbázis.kapcsolatok.mysql.adatbázis ')
=> „Lar”
>>> dd ($ _ ENV)
[]
Gyakran látni fogja, hogy a következő dolog elvégzése sem változik. A fejlesztők azonban megpróbálják tesztelni konfigurációjukat egy teljesen új Laravel telepítés futtatásával, és csak a régi alkalmazásmappa másolásával. Nem futtatnak zeneszerző csomagokat, és nem is csinálnak mást.
Hacsak nem Linux-ot használ (kicsit később elmondom, miért), nem lát semmilyen változást.
Megoldás
Mint mindig, sokféleképpen megteheti ezt a problémát, de néhány közülük nagyobb eséllyel fog sikerülni.
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 tehetne.
Mivel a kódunk manapság sok könyvtárat használ, kénytelenek vagyunk gyorsítótárba helyezni a dolgokat, hogy futás közben gyors hozzáférést biztosítsunk hozzájuk.
Nekem személyesen voltak problémáim 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 képes voltam töltse be újra az alkalmazást .env értékek a következők elvégzése nélkül.
A következő parancsok futtatásával törölje a konfigurációs gyorsítótárat:
php kézműves config: cachephp kézműves konfig: tiszta
Ellenőrizze, hogy nincs-e üres hely a .env fájl
A legközelebbi megoldás abban áll, hogy a szóközök belsejében fehérek vannak .env fájl. És ez, ha ott a legtöbb ember megbukik, és elkezdi repeszteni a haját.
Nagyon könnyű ezt elmulasztani, de példaként megemlítheti, mi lehet a sajátjában .Az env fájl valami ilyesmi:
SITE_NAME = Saját Laravel alkalmazásEz önmagában nem fog működni, mivel a fehér terek megrontják a .env fájl.
Amit meg kell tennie, az ilyen idézőjelek közé kell csomagolnia az értékeit:
SITE_NAME = "Saját Laravel alkalmazás"Ezúttal minden rendben működjön.
Csak változtatáskor törölje a konfigurációs gyorsítótárat. Megtehetjük ugyanúgy, mint korábban:
php kézműves config: cachephp kézműves konfig: tiszta