Laravel po změně nečte soubor .env

Laravel Is Not Reading



Problém

Toto je docela běžný problém, který se objevuje mezi novými vývojáři Laravelu.

Mnoho lidí se pokoušelo aktualizovat svůj soubor .env, aby vidělo, že když aktualizují svou aplikaci, konfigurační hodnoty .env se nezobrazují.







A co je zajímavější, poměrně často se to objeví po upgradu verze Laravel.



Například byste to měli ve svém souboru .env:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Pak byste přirozeně v souboru config/database.php měli toto:





'Mysql'=> [
' databáze '=>env(„DB_DATABASE“,'stehno'),
„Uživatelské jméno“=>env(„DB_USERNAME“,'stehno'),
]

forge zde znamená výchozí hodnoty. To znamená, že tyto hodnoty budou použity v případě, že jste neuvedli své DB_DATABASE a DB_USERNAME hodnoty uvnitř vašeho souboru .env. Tyto informace budou za chvíli užitečné.

Nyní víte, že máte tento konkrétní problém, když narazíte na následující výjimku:



PDOException: SQLSTATE[HY000] [1045]Přístup odepřen pro uživatel ‘Lar’@‘localhost’
( použitím Heslo : NE )

To jasně ukazuje, že vaše aplikace Laravel získává výchozí hodnotu z vašeho config/database.php soubor a ne z vašeho .env.

Než uděláte něco jiného, ​​můžete se také pokusit ověřit tento problém pomocí php artisan tinker:

>>>env(„DB_DATABASE“)
=> nula
>>>getenv(„DB_DATABASE“)
=> Nepravdivé
>>>konfigur(' databáze .connections.mysql. databáze ')
=>stehno
>>>dd($ _ENV)
[]

Často uvidíte, že ani následující věc nic nezmění. Vývojáři se však snaží otestovat jejich konfiguraci spuštěním zcela nové instalace Laravel a pouze zkopírováním staré složky aplikace. Nespouštějí žádné instalace balíčků skladatelů ani nedělají nic jiného.

Pokud nejste na Linuxu (řeknu vám proč o něco později), neuvidíte žádné změny.

Řešení

Jako vždy existuje mnoho věcí, které můžete udělat, abyste se pokusili tento problém vyřešit, ale některé z nich mají větší šanci uspět.

Vymažte mezipaměť konfigurace

Nejprve, pokud jste to neudělali, musíte vymazat mezipaměť konfigurace, než budete moci dělat cokoli jiného.

Protože náš kód v dnešní době používá tolik knihoven, jsme nuceni ukládat věci do mezipaměti, abychom k nim měli rychlý přístup během běhu.

Osobně jsem s tím měl problémy ve Windows a Mac, ale všiml jsem si, že z nějakého důvodu jsou v Linuxu (Ubuntu) tyto konfigurační soubory buď vymazány nějakým háčkem, nebo nejsou vůbec ukládány do mezipaměti, protože jsem byl schopen znovu načtěte aplikaci s novými hodnotami .env, aniž byste provedli následující.

Nezapomeňte vymazat mezipaměť konfigurace spuštěním následujících příkazů:

php řemeslná konfigurace:mezipaměti
php řemeslná konfigurace:Průhledná

Zkontrolujte, zda v souboru .env nejsou prázdná místa

Úplně další řešení je z hlediska mezer uvnitř souboru .env. A tenhle, pokud většina lidí selže a začne si trhat vlasy.

Je velmi snadné to přehlédnout, ale jako příklad toho, co byste mohli mít ve svém souboru .env, je něco takového:

JMÉNO STRÁNKY=Moje aplikace Laravel

To samo o sobě nebude fungovat, protože mezery poškodí soubor .env.

Co musíte udělat, je zabalit vaše hodnoty do uvozovek takto:

JMÉNO STRÁNKY=Moje aplikace Laravel

Tentokrát by vše mělo fungovat dobře.

Při každé změně nezapomeňte vymazat mezipaměť konfigurace. Můžeme to udělat stejně jako dříve:

php řemeslná konfigurace:mezipaměti
php řemeslná konfigurace:Průhledná