laravel

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

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

Problém

Toto je poměrně častý problém, který se objeví mezi novými vývojáři Laravelu.

Mnoho lidí se pokouší aktualizovat své .soubor env, jen aby zjistil, že při aktualizaci aplikace se soubor .Hodnoty konfigurace env se nezobrazují.

A co je zajímavější je, že se to docela často objeví po upgradu vaší verze Laravel.

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

DB_DATABASE = laraveldb
DB_USERNAME = laraveluser

Pak přirozeně uvnitř konfigurace / databáze.soubor php byste měli toto:

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

forge zde znamená výchozí hodnoty. To znamená, že tyto hodnoty budou použity v případě, že jste nezadali svůj DB_DATABASE a DB_USERNAME hodnoty uvnitř vašeho .soubor env. Tyto informace budou trochu užitečné.

Jak však víte, že máte tento konkrétní problém, je to, že narazíte na následující výjimku:

PDOException: SQLSTATE [HY000] [1045] Přístup odepřen pro uživatele 'lar' @ 'localhost'
(pomocí hesla: NE)

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

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

>>> env ('DB_DATABASE')
=> null
>>> getenv ('DB_DATABASE')
=> false
>>> config ('databáze.připojení.mysql.databáze')
=> „Lar“
>>> dd ($ _ ENV)
[]

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

Pokud nejste na Linuxu (o něco později vám řeknu), 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 u několika z nich je větší pravděpodobnost úspěchu.

Vymažte mezipaměť konfigurace

Nejprve, pokud nemáte, musíte vyčistit konfigurační mezipaměť, než budete moci dělat cokoli jiného.

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

Osobně jsem s tím měl problémy na 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 způsobem, nebo se vůbec neukládají do mezipaměti, protože jsem byl schopen znovu načtěte aplikaci novým .hodnoty env bez provedení následujících kroků.

Ujistěte se, že jste vymazali mezipaměť konfigurace spuštěním následujících příkazů:

php artisan config: mezipaměť
php artisan config: vymazat

Zkontrolujte, zda ve vašem souboru nejsou prázdná místa .soubor env

Úplně další řešení spočívá v tom, že máte uvnitř prázdná místa .soubor env. A tohle, pokud většina lidí selže a začne si trhat vlasy.

Je velmi snadné si to nechat ujít, ale jako příklad toho, co byste mohli mít ve svém .soubor env je něco jako toto:

SITE_NAME = Moje laravel aplikace

Toto 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:

SITE_NAME = „Moje laravelní aplikace“

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

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

php artisan config: mezipaměť
php artisan config: vymazat
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...
Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...