laravel

Laravel ne bere .env po spremembi

Laravel ne bere .env po spremembi

Težava

Ta je precej pogosta težava, ki se pojavi med novimi razvijalci Laravel.

Veliko ljudi poskuša posodobiti svoje .env samo zato, da se prepričate, da ko osvežijo svojo aplikacijo, .Vrednosti konfiguracije env se ne prikažejo.

In še bolj zanimivo je, da se to pogosto pojavi po nadgradnji različice Laravel.

Tako bi na primer to imeli v svojem .env datoteka:

DB_DATABASE = laraveldb
DB_USERNAME = laraveluser

Potem seveda znotraj config / baze podatkov.php datoteko bi imeli to:

'mysql' => [
'baza podatkov' => env ('DB_DATABASE', 'lar'),
'uporabniško ime' => env ('DB_USERNAME', 'lar'),
]

forge tukaj pomeni privzete vrednosti. To pomeni, da bodo te vrednosti uporabljene v primeru, da niste navedli svojega DB_DATABASE in DB_USERNAME vrednosti znotraj vašega .env datoteko. Te informacije vam bodo kmalu v pomoč.

Zdaj, kako veste, da imate to specifično težavo, je, če naletite na naslednjo izjemo:

PDOException: SQLSTATE [HY000] [1045] Dostop zavrnjen za uporabnika 'lar' @ 'localhost'
(z geslom: NE)

To jasno kaže, da vaša aplikacija Laravel vnaša privzeto vrednost iz vašega config / zbirka podatkov.php in ne iz vašega .env .

Preden začnete kar koli drugega, poskusite to težavo preveriti tudi s pomočjo php artisan tinker:

>>> env ('DB_DATABASE')
=> null
>>> getenv ('DB_DATABASE')
=> napačno
>>> config ('baza podatkov.povezave.mysql.zbirka podatkov ')
=> “Lar”
>>> dd ($ _ ENV)
[]

Pogosto boste videli, da tudi to, da storite naslednje, ne bo nič spremenilo. Vendar pa razvijalci skušajo preizkusiti svojo konfiguracijo tako, da zaženejo popolnoma novo namestitev Laravel in samo kopirajo staro mapo aplikacije. Ne izvajajo nobene namestitve skladateljskega paketa ali delajo česar koli drugega.

Če ne uporabljate Linuxa (nekaj kasneje vam bom povedal, zakaj), sprememb ne boste videli.

Rešitev

Kot vedno obstaja veliko stvari, s katerimi lahko poskusite rešiti to težavo, vendar je nekaj verjetneje uspešnih.

Počistite predpomnilnik

Najprej, če še niste, morate počistiti predpomnilnik konfiguracije, preden lahko storite kar koli drugega.

Ker naša koda danes uporablja toliko knjižnic, smo prisiljeni stvari predpomniti, da omogočimo hiter dostop do njih med izvajanjem.

Osebno sem imel težave s tem v operacijskih sistemih Windows in Mac, vendar sem opazil, da se iz nekega razloga v Linuxu (Ubuntu) te konfiguracijske datoteke bodisi počistijo z nekakšno kljuko ali pa se sploh ne shranijo v predpomnilnik, ker sem lahko znova naložite aplikacijo z novo .vrednosti env, ne da bi naredili naslednje.

Ne pozabite počistiti konfiguracijskega predpomnilnika, tako da zaženete naslednje ukaze:

php artisan config: cache
php artisan config: jasno

Preverite, ali so v vašem .env datoteko

Naslednja rešitev je v zvezi s presledki v vašem .env datoteko. In to, če večina ljudi odpove in si začne trgati lase.

Tega je zelo enostavno zamuditi, ampak kot primer, kaj bi lahko imeli v svojem .datoteka env je nekaj takega:

SITE_NAME = Moja aplikacija Laravel

Samo to ne bo delovalo, saj bodo beli prostori poškodovali .env datoteko.

Kar morate storiti, je, da svoje vrednosti zavijete v narekovaje, kot je ta:

SITE_NAME = "Moja prijava za Laravel"

Tokrat bi moralo vse delovati v redu.

Prepričajte se, da ob vsaki spremembi počistite predpomnilnik. To lahko storimo enako kot prej:

php artisan config: cache
php artisan config: jasno
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...
Kako prikazati prekrivanje zaslonskega menija v celozaslonskih aplikacijah in igrah za Linux
Igranje celozaslonskih iger ali uporaba aplikacij v celozaslonskem načinu brez motenj vam lahko odreže ustrezne sistemske informacije, ki so vidne na ...
Top 5 kartic za zajemanje iger
Vsi smo v YouTubu videli in oboževali pretakanje iger. PewDiePie, Jakesepticye in Markiplier so le nekateri izmed najboljših igralcev, ki so zaslužili...