laravel

Laravel nem olvas .env fájl változtatás után

Laravel nem olvas .env fájl változtatás után

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

Ez ö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: cache
php kézműves konfig: tiszta
Az egérmutató és a kurzor méretének, színének és sémájának módosítása a Windows 10 rendszeren
Az egérmutató és a kurzor a Windows 10 operációs rendszerben nagyon fontos szempont. Ez elmondható más operációs rendszerekről is, tehát valójában eze...
Ingyenes és nyílt forráskódú játékmotorok a Linux játékok fejlesztéséhez
Ez a cikk felsorolja azokat az ingyenes és nyílt forráskódú játékmotorokat, amelyek felhasználhatók 2D és 3D játékok fejlesztésére Linuxon. Számos ily...
Shadow of the Tomb Raider for Linux Tutorial
A Shadow of the Tomb Raider a Tomb Raider sorozat tizenkettedik kiegészítője - az Eidos Montreal által létrehozott akció-kaland játék franchise. A ját...