laravel

Laravel ne čita .env datoteku nakon promjene

Laravel ne čita .env datoteku nakon promjene

Problem

Ovo je prilično čest problem koji se pojavljuje među novim programerima Laravela.

Mnogi ljudi pokušavaju ažurirati svoje .env samo kako bi vidjeli da kad osvježe svoju aplikaciju, .Vrijednosti env konfiguracije se ne prikazuju.

I što je još zanimljivije, to se prilično često pojavljuje nakon nadogradnje verzije Laravel.

Tako biste, na primjer, imali ovo u svom .env datoteka:

DB_DATABASE = laraveldb
DB_USERNAME = laraveluser

Zatim, naravno, unutar config / baze podataka.php datoteku imali biste ovo:

'mysql' => [
'baza podataka' => env ('DB_DATABASE', 'lar'),
'korisničko ime' => env ('DB_USERNAME', 'lar'),
]

forge ovdje označava zadane vrijednosti. To znači da će se ove vrijednosti koristiti u slučaju da niste dali svoj DB_DATABASE i DB_KORISNIČKO IME vrijednosti unutar vašeg .env datoteka. Ove će vam informacije malo pomoći.

Dakle, kako znate da imate ovaj specifični problem jest ako naiđete na sljedeću iznimku:

PDOException: SQLSTATE [HY000] [1045] Zabranjen pristup za korisnika 'lar' @ 'localhost'
(pomoću lozinke: NE)

To jasno pokazuje da vaša aplikacija Laravel uvlači zadanu vrijednost iz vašeg config / baza podataka.php datoteke, a ne iz vašeg .env .

Prije nego što napravite bilo što drugo, možete pokušati provjeriti i ovaj problem koristeći php zanatlijski tinker:

>>> env ('DB_DATABASE')
=> null
>>> getenv ('DB_DATABASE')
=> netačno
>>> config ('baza podataka.veze.mysql.baza podataka')
=> "Lar"
>>> dd ($ _ ENV)
[]

Često ćete vidjeti da ni sljedeće što radite neće imati razlike. Međutim, programeri pokušavaju testirati svoju konfiguraciju pokretanjem potpuno nove instalacije Laravela i samo kopiranjem stare mape aplikacije. Oni ne pokreću instalacijske pakete skladatelja niti rade bilo što drugo.

Ako niste na Linuxu (reći ću vam zašto malo kasnije), nećete vidjeti nikakve promjene.

Riješenje

Kao i uvijek, postoji mnogo stvari koje možete učiniti da biste pokušali riješiti ovaj problem, ali nekoliko će vjerojatnije uspjeti.

Očistite konfiguracijsku predmemoriju

Prvo, ako niste, morate očistiti konfiguracijsku predmemoriju prije nego što možete učiniti bilo što drugo.

Budući da naš kod danas koristi toliko biblioteka, prisiljeni smo predmemorirati stvari kako bismo im brzo pristupili tijekom izvođenja.

Osobno sam imao problema s tim na sustavima Windows i Mac, međutim, primijetio sam da se iz nekog razloga na Linuxu (Ubuntu) ove konfiguracijske datoteke ili brišu nekom vrstom udice ili se uopće ne spremaju u predmemoriju, jer sam uspio ponovno učitajte aplikaciju s novom .env vrijednosti bez poduzimanja sljedećeg.

Obavezno očistite konfiguracijsku predmemoriju pokretanjem sljedećih naredbi:

php artisan config: predmemorija
php artisan config: jasno

Provjerite ima li praznih mjesta u vašem .env datoteka

Sljedeće je rješenje u smislu bijelih prostora unutar vašeg .env datoteka. A ovaj ako većina ljudi zakaže i počne čupati kosu.

To je vrlo lako propustiti, ali kao primjer ono što biste mogli imati u svom .env datoteka je otprilike ovako:

SITE_NAME = Moja aplikacija Laravel

Samo ovo neće uspjeti jer će bijeli razmaci oštetiti .env datoteka.

Ono što trebate učiniti je umotati svoje vrijednosti u navodnike ovako:

SITE_NAME = "Moja prijava za Laravel"

Ovaj put sve bi trebalo funkcionirati sasvim u redu.

Pazite da obrišete konfiguracijsku predmemoriju svaki put kad napravite promjenu. To možemo učiniti isto kao i prije:

php artisan config: predmemorija
php artisan config: jasno
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...
HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...