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 : NĒ )
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ņaphp 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 lietojumprogrammaTas 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ņaphp artisan config:skaidrs