laravel

Laravel nečíta .env súbor po zmene

Laravel nečíta .env súbor po zmene

Problém

Toto je pomerne častý problém, ktorý sa objaví medzi novými vývojármi Laravelu.

Mnoho ľudí sa pokúša aktualizovať svoje .súbor env, len aby videli, že keď obnovia svoju aplikáciu, .Hodnoty konfigurácie env sa nezobrazujú.

A čo je ešte zaujímavejšie, dosť často sa to prejaví po aktualizácii verzie Laravel.

Napríklad by ste to mali vo svojom .súbor env:

DB_DATABASE = laraveldb
DB_USERNAME = laraveluser

Potom prirodzene vo vnútri konfigurácie / databázy.súbor php, ktorý by ste mali tento:

'mysql' => [
'database' => env ('DB_DATABASE', 'lar'),
'username' => env ('DB_USERNAME', 'lar'),
]

forge tu znamená predvolené hodnoty. To znamená, že tieto hodnoty sa použijú v prípade, že ste nezadali svoju hodnotu DB_DATABASE a DB_USERNAME hodnoty vo vašom .súbor env. Tieto informácie budú trochu užitočné.

Ako však viete, že máte tento konkrétny problém, je to, že narazíte na nasledujúcu výnimku:

PDOException: SQLSTATE [HY000] [1045] Prístup odmietnutý pre používateľa „lar“ @ „localhost“
(pomocou hesla: NIE)

To jasne ukazuje, že vaša aplikácia Laravel sťahuje predvolenú hodnotu z vášho konfigurácia / databáza.php súboru a nie z vášho .env .

Predtým, ako urobíte čokoľvek iné, môžete tiež skúsiť overiť tento problém pomocou php artisan tinkera:

>>> env ('DB_DATABASE')
=> null
>>> getenv ('DB_DATABASE')
=> nepravdivé
>>> config ('databáza.spojenia.mysql.databáza ')
=> „Lar“
>>> dd ($ _ ENV)
[]

Často uvidíte, že ani vykonanie nasledujúcej veci nezmení. Vývojári sa však snažia otestovať svoju konfiguráciu spustením úplne novej inštalácie Laravelu a iba skopírovaním starého priečinka aplikácie. Nepúšťajú žiadne inštalácie skladacích balíkov ani nerobia nič iné.

Pokiaľ nepoužívate Linux (o niečo neskôr vám poviem), zmeny sa nedočkajú.

Riešenie

Ako vždy existuje veľa vecí, ktoré môžete urobiť, aby ste sa pokúsili vyriešiť tento problém, ale u niekoľkých z nich je vyššia pravdepodobnosť úspechu.

Vymažte konfiguračnú vyrovnávaciu pamäť

Ak to neurobíte, musíte najskôr vyčistiť konfiguračnú pamäť, aby ste mohli robiť čokoľvek iné.

Pretože náš kód v dnešnej dobe používa toľko knižníc, sme nútení ukladať veci do medzipamäte, aby sme k nim počas behu mohli rýchlo získať prístup.

Osobne som s tým mal problémy v systémoch Windows a Mac, všimol som si však, že z nejakého dôvodu sú v systéme Linux (Ubuntu) tieto konfiguračné súbory buď vymazané nejakým spôsobom, alebo sa vôbec neukladajú do vyrovnávacej pamäte, pretože som bol schopný znovu načítať aplikáciu s novými .hodnoty env bez vykonania nasledujúcich krokov.

Uistite sa, že ste vyčistili svoju vyrovnávaciu pamäť konfigurácie spustením nasledujúcich príkazov:

konfigurácia remeselníka php: vyrovnávacia pamäť
konfigurácia remeselníka php: vyčistiť

Skontrolujte, či vo vašom priečinku nie sú prázdne miesta .súbor env

Úplne ďalšie riešenie spočíva v tom, že vo vnútri súboru máte medzery .súbor env. A tento, ak tam, kde väčšina ľudí zlyháva a začne si trhať vlasy.

Je veľmi ľahké si to nechať ujsť, ale ako príklad by ste mohli uviesť, čo v sebe máte .súbor env je asi taký:

SITE_NAME = Moja aplikácia laravel

Toto samo o sebe nebude fungovať, pretože biele miesta poškodia .súbor env.

Čo musíte urobiť, je zabaliť vaše hodnoty do úvodzoviek takto:

SITE_NAME = „Moja laravelná aplikácia“

Tentokrát by malo všetko fungovať dobre.

Pri každej zmene nezabudnite vyčistiť konfiguračnú vyrovnávaciu pamäť. Môžeme to urobiť rovnako ako predtým:

konfigurácia remeselníka php: vyrovnávacia pamäť
konfigurácia remeselníka php: vyčistiť
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...
Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...
Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...