Laravel pēc izmaiņām neizlasa .env failu

Laravel Is Not Reading



Problēma

Šī ir diezgan izplatīta problēma, kas parādās jauno Laravel izstrādātāju vidū.

Daudzi cilvēki ir mēģinājuši atjaunināt savu .env failu, lai redzētu, ka, atsvaidzinot savu lietojumprogrammu, .env konfigurācijas vērtības netiek rādītas.







Un vēl interesantāk ir tas, ka diezgan bieži tas tiks parādīts pēc Laravel versijas jaunināšanas.



Piemēram, jūsu .env failā būtu šāda informācija:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Tad, protams, failā config/database.php jums būtu šāds:





'Mysql'=> [
' datu bāze '=>env(“DB_DATABASE”,'augšstilbs'),
'Lietotājvārds'=>env(“DB_USERNAME”,'augšstilbs'),
]

forge šeit apzīmē noklusējuma vērtības. Tas nozīmē, ka šīs vērtības tiks izmantotas gadījumā, ja neesat norādījis savu DB_DATABASE un DB_USERNAME vērtības jūsu .env failā. Šī informācija nedaudz noderēs.

Tagad jūs zināt, ka jums ir šī konkrētā problēma, ja rodas šāds izņēmums:



ACVN izņēmums: SQLSTATE[HY000] [1045]Piekļuve liegta par lietotājs “Lar”@“localhost”
( izmantojot parole : )

Tas skaidri parāda, ka jūsu Laravel lietojumprogramma izmanto jūsu noklusējuma vērtību config/database.php failu, nevis no jūsu .env.

Pirms kaut ko darīt, varat arī mēģināt pārbaudīt šo problēmu, izmantojot arī php artisan tinker:

>>>env(“DB_DATABASE”)
=> null
>>>getenv(“DB_DATABASE”)
=> nepatiesa
>>>config(' datu bāze .connections.mysql. datu bāze ')
=>augšstilbs
>>>dd($ _ENV)
[]

Jūs bieži redzēsit, ka, veicot tālāk norādītās darbības, nekas nemainīsies. Tomēr izstrādātāji mēģina pārbaudīt savu konfigurāciju, palaižot pilnīgi jaunu Laravel instalāciju un vienkārši nokopējot veco lietotņu mapi. Viņi nepalaiž komponista pakotnes instalācijas un nedara kaut ko citu.

Ja vien jūs neizmantojat Linux (es jums pastāstīšu, kāpēc mazliet vēlāk), jūs neredzēsit nekādas izmaiņas.

Risinājums

Kā vienmēr, jūs varat darīt daudzas lietas, lai mēģinātu atrisināt šo problēmu, taču dažas no tām, visticamāk, gūs panākumus.

Notīriet konfigurācijas kešatmiņu

Pirmkārt, ja vēl neesat to izdarījis, jums ir jātīra konfigurācijas kešatmiņa, pirms varat darīt kaut ko citu.

Tā kā mūsdienās mūsu kods izmanto tik daudz bibliotēku, mēs esam spiesti saglabāt lietas kešatmiņā, lai izpildes laikā tām varētu ātri piekļūt.

Man personīgi bija problēmas ar to operētājsistēmā Windows un Mac, tomēr pamanīju, ka kāda iemesla dēļ operētājsistēmā Linux (Ubuntu) šie konfigurācijas faili tiek vai nu notīrīti ar kaut kādu āķi, vai arī tie netiek vispār saglabāti kešatmiņā, jo es varēju atkārtoti ielādējiet lietojumprogrammu ar jaunām .env vērtībām, neveicot tālāk norādītās darbības.

Noteikti notīriet konfigurācijas kešatmiņu, palaižot šādas komandas:

php artisan config:kešatmiņa
php artisan config:skaidrs

Pārbaudiet, vai jūsu .env failā nav tukšu vietu

Nākamais risinājums ir tāds, ka jūsu .env failā ir atstarpes. Un šis, ja lielākā daļa cilvēku neizdodas un sāk plēst matus.

To ir ļoti viegli palaist garām, taču, piemēram, jūsu .env failā varētu būt kaut kas līdzīgs šim:

SITE_NAME=Mana Laravel lietojumprogramma

Tas vien nedarbosies, jo atstarpes sabojās .env failu.

Jums jādara savas vērtības citātos šādi:

SITE_NAME=Mana Laravel lietojumprogramma

Šoreiz visam vajadzētu darboties lieliski.

Vienkārši noteikti notīriet konfigurācijas kešatmiņu katru reizi, kad veicat izmaiņas. Mēs to varam darīt tāpat kā iepriekš:

php artisan config:kešatmiņa
php artisan config:skaidrs