Po pakeitimo „Laravel“ neskaito .env failo

Laravel Is Not Reading



Problema

Tai yra gana dažna problema, atsirandanti tarp naujų „Laravel“ kūrėjų.

Daugelis žmonių bandė atnaujinti savo .env failą tik norėdami pamatyti, kad atnaujinus programą, .env konfigūracijos reikšmės nerodomos.





Ir įdomiau yra tai, kad gana dažnai tai pasirodys atnaujinus „Laravel“ versiją.



Pvz., Tai turėsite savo .env faile:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Natūralu, kad failo config/database.php viduje turėtumėte tai:





'Mysql'=> [
' duomenų bazę '=>env(„DB_DATABASE“,'šlaunys'),
'Vartotojo vardas'=>env(„DB_USERNAME“,'šlaunys'),
]

forge čia reiškia numatytas vertes. Tai reiškia, kad šios vertės bus naudojamos tuo atveju, jei nepateikėte savo DB_DATABASE ir DB_USERNAME .env failo vertės. Ši informacija šiek tiek pravers.

Dabar jūs žinote, kad turite šią konkrečią problemą, jei susiduriate su tokia išimtimi:



SKVN Išimtis: SQLSTATE[HY000] [1045]Prieiga uždrausta dėl Vartotojas „Lar“@„localhost“
( naudojant Slaptažodis : NE )

Tai aiškiai parodo, kad jūsų „Laravel“ programa iš jūsų gauna numatytąją vertę config/database.php failą, o ne iš jūsų .env.

Prieš darydami ką nors kita, taip pat galite pabandyti patikrinti šią problemą naudodami „php artisan tinker“:

>>>env(„DB_DATABASE“)
=> nulis
>>>getenv(„DB_DATABASE“)
=> klaidinga
>>>konfig(' duomenų bazę .connections.mysql. duomenų bazę ')
=>šlaunies
>>>dd($ _ENV)
[]

Dažnai pamatysite, kad atlikę šiuos veiksmus taip pat nieko nepakeisite. Tačiau kūrėjai bando išbandyti savo konfigūraciją paleisdami visiškai naują „Laravel“ diegimą ir tiesiog nukopijuodami seną programos aplanką. Jie nevykdo jokių kompozitoriaus paketų instaliacijų ar daro ką nors kita.

Nebent naudojate „Linux“ (aš jums pasakysiu, kodėl šiek tiek vėliau), nematysite jokių pakeitimų.

Sprendimas

Kaip visada, galite padaryti daug dalykų, kad išspręstumėte šią problemą, tačiau tikėtina, kad keli iš jų pavyks.

Išvalykite konfigūracijos talpyklą

Pirmiausia, jei to nepadarėte, turite išvalyti konfigūracijos talpyklą, kad galėtumėte ką nors padaryti.

Kadangi mūsų kodas šiais laikais naudoja tiek daug bibliotekų, esame priversti talpykloje išsaugoti daiktus, kad galėtume greitai juos pasiekti vykdymo metu.

Aš asmeniškai turėjau problemų dėl to „Windows“ ir „Mac“, tačiau pastebėjau, kad dėl kokių nors priežasčių „Linux“ („Ubuntu“) šie konfigūracijos failai yra arba išvalyti su kažkokiu užkabinimu, arba jie visai nėra saugomi talpykloje, nes galėjau iš naujo įkelkite programą su naujomis .env reikšmėmis, neatlikdami šių veiksmų.

Būtinai išvalykite konfigūracijos talpyklą vykdydami šias komandas:

php artisan config:talpykla
php artisan config:aišku

Patikrinkite, ar jūsų .env faile nėra tuščių vietų

Kitas sprendimas yra tai, kad jūsų .env faile yra tarpų. Ir tai, jei daugumai žmonių nepavyksta ir jie pradeda plėšti plaukus.

Tai labai lengva praleisti, bet kaip pavyzdį .env faile galite turėti kažką panašaus:

SITE_NAME=Mano „Laravel“ programa

Vien tai neveiks, nes tuščios vietos sugadins .env failą.

Tai, ką jums reikia padaryti, yra įtraukti savo vertes į kabučius taip:

SITE_NAME=Mano „Laravel“ programa

Šį kartą viskas turėtų veikti gerai.

Tiesiog būtinai išvalykite konfigūracijos talpyklą kiekvieną kartą atlikdami pakeitimus. Tai galime padaryti taip pat, kaip ir anksčiau:

php artisan config:talpykla
php artisan config:aišku