laravel

Laravel nu citește .fișier env după schimbare

Laravel nu citește .fișier env după schimbare

Problemă

Aceasta este o problemă destul de comună, care apare printre noii dezvoltatori Laravel.

O mulțime de oameni au încercat să-și actualizeze .env doar pentru a vedea că atunci când își reîmprospătează aplicația, fișierul .valorile de configurare env nu apar.

Și ce este mai interesant este că destul de des, acest lucru va apărea după ce vă actualizați versiunea Laravel.

Deci, de exemplu, ați avea acest lucru în dumneavoastră .fișier env:

DB_DATABASE = laraveldb
DB_USERNAME = laraveluser

Apoi, în mod natural, în config / baza de date.fișier php ați avea acest lucru:

'mysql' => [
'bază de date' => env ('DB_DATABASE', 'lar'),
'username' => env ('DB_USERNAME', 'lar'),
]

forge aici reprezintă valorile implicite. Aceasta înseamnă că aceste valori vor fi utilizate în cazul în care nu ați furnizat-o DB_DATABASE și DB_USERNAME valorile din interiorul dvs .fișier env. Aceste informații vor fi utile într-un pic.

Acum, de unde știi că ai această problemă specifică este dacă întâlnești următoarea excepție:

PDOException: SQLSTATE [HY000] [1045] Acces refuzat pentru utilizator 'lar' @ 'localhost'
(folosind parola: NU)

Acest lucru arată în mod clar că aplicația dvs. Laravel extrage valoarea implicită din config / bază de date.php fișier și nu din .env .

Înainte de a face orice altceva, puteți încerca, de asemenea, să verificați această problemă folosind și PHP artisan tinker:

>>> env ('DB_DATABASE')
=> nul
>>> getenv ('DB_DATABASE')
=> fals
>>> config ('baza de date.conexiuni.mysql.Bază de date')
=> „Lar”
>>> dd ($ _ ENV)
[]

Veți vedea adesea că a face următorul lucru nu va face nici o diferență. Cu toate acestea, dezvoltatorii încearcă să-și testeze configurația executând o instalare Laravel complet nouă și doar copiind vechiul folder al aplicației. Nu rulează nicio instalare de pachete de compozitori și nu fac altceva.

Dacă nu sunteți pe Linux (vă voi spune de ce puțin mai târziu), nu veți vedea nicio modificare.

Soluţie

Ca întotdeauna, există multe lucruri pe care le puteți face pentru a încerca să rezolvați această problemă, dar câteva dintre ele au mai multe șanse să reușească.

Ștergeți memoria cache de configurare

În primul rând, dacă nu ați făcut-o, trebuie să ștergeți memoria cache de configurare înainte de a putea face orice altceva.

Deoarece codul nostru folosește atât de multe biblioteci în zilele noastre, suntem forțați să ascundem în cache lucrurile pentru a le permite accesul rapid în timpul rulării.

Personal am avut probleme cu acest lucru pe Windows și Mac, cu toate acestea, am observat că, dintr-un anumit motiv, pe Linux (Ubuntu) aceste fișiere de configurare sunt fie șterse cu un fel de cârlig, fie nu sunt deloc în cache, pentru că am reușit să reîncărcați aplicația cu nou .env valori fără a face următoarele.

Asigurați-vă că ștergeți memoria cache de configurare executând următoarele comenzi:

php artisan config: cache
config artizan php: clar

Verificați dacă există spații goale în interiorul .fișier env

Următoarea soluție este în ceea ce privește spațiile albe în interiorul dvs .fișier env. Și acesta dacă acolo unde majoritatea oamenilor eșuează și încep să-și rupă părul.

Este foarte ușor să ratezi acest lucru, dar ca exemplu ce ai putea avea în tine .fișierul env este ceva de genul acesta:

SITE_NAME = Aplicația mea Laravel

Acest lucru singur nu va funcționa, deoarece spațiile albe vor corupe .fișier env.

Ce trebuie să faceți este să vă înfășurați valorile în ghilimele astfel:

SITE_NAME = ”Aplicația mea Laravel”

De data aceasta totul ar trebui să funcționeze foarte bine.

Asigurați-vă că ștergeți memoria cache de configurare de fiecare dată când efectuați o modificare. Putem face acest lucru la fel ca înainte:

php artisan config: cache
config artizan php: clar
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Cum să capturați și să transmiteți în flux sesiunea de jocuri pe Linux
În trecut, jocurile erau considerate doar un hobby, dar cu timpul industria jocurilor a cunoscut o creștere imensă în ceea ce privește tehnologia și n...
Cele mai bune jocuri pentru a juca cu urmărirea manuală
Oculus Quest a introdus recent marea idee de urmărire manuală fără controlere. Cu un număr din ce în ce mai mare de jocuri și activități care execută ...