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 = laraveldbDB_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 laravelToto 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ť