Laravel non legge il file .env dopo la modifica

Laravel Is Not Reading



Problema

Questo è un problema abbastanza comune che si presenta tra i nuovi sviluppatori di Laravel.

Molte persone hanno provato ad aggiornare il loro file .env solo per vedere che quando aggiornano la loro applicazione, i valori di configurazione .env non vengono visualizzati.







E la cosa più interessante è che abbastanza spesso, questo apparirà dopo aver aggiornato la tua versione di Laravel.



Quindi, ad esempio, avresti questo nel tuo file .env:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Quindi, naturalmente, all'interno del file config/database.php avresti questo:





'mysql'=> [
' Banca dati '=>env('DB_DATABASE','coscia'),
'nome utente'=>env('DB_USERNAME','coscia'),
]

forge qui sta per valori di default. Ciò significa che questi valori verranno utilizzati nel caso in cui tu non abbia fornito il tuo DB_DATABASE e DB_USERNAME valori all'interno del file .env. Queste informazioni saranno utili tra un po'.

Ora, come sai di avere questo problema specifico è se ti imbatti nella seguente eccezione:



PDOException: SQLSTATE[HY000] [1045]Accesso negato per utente 'lar'@'localhost'
( usando parola d'ordine : NO )

Questo mostra chiaramente che la tua applicazione Laravel sta estraendo il valore predefinito dal tuo config/database.php file e non dal tuo .env .

Prima di fare qualsiasi altra cosa, puoi anche provare a verificare questo problema usando anche PHP craft tinker:

>>>env('DB_DATABASE')
=> nullo
>>>getenv('DB_DATABASE')
=> falso
>>>config(' Banca dati .connections.mysql. Banca dati ')
=>coscia
>>>dd($ _ENV)
[]

Vedrai spesso che anche fare la seguente cosa non farà la differenza. Tuttavia, gli sviluppatori provano a testare la loro configurazione eseguendo un'installazione Laravel completamente nuova e copiando semplicemente la vecchia cartella dell'app. Non eseguono alcuna installazione di pacchetto compositore o altro.

A meno che tu non sia su Linux (ti dirò perché un po 'più tardi), non vedrai alcun cambiamento.

Soluzione

Come sempre, ci sono molte cose che puoi fare per cercare di risolvere questo problema, ma alcune hanno maggiori probabilità di successo.

Svuota la cache di configurazione

Prima di tutto, se non lo hai fatto, devi svuotare la cache di configurazione prima di poter fare qualsiasi altra cosa.

Poiché il nostro codice utilizza così tante librerie al giorno d'oggi, siamo costretti a memorizzare nella cache le cose per accedervi rapidamente durante il runtime.

Personalmente ho avuto problemi con questo su Windows e Mac, tuttavia, ho notato che per qualche motivo, su Linux (Ubuntu) questi file di configurazione vengono cancellati con una sorta di hook o non vengono affatto memorizzati nella cache, perché sono stato in grado di ricaricare l'applicazione con nuovi valori .env senza effettuare le seguenti operazioni.

Assicurati di cancellare la cache di configurazione eseguendo i seguenti comandi:

configurazione artigianale php:cache
configurazione artigianale php:chiaro

Controlla gli spazi vuoti all'interno del tuo file .env

La soluzione successiva è in termini di spazi bianchi all'interno del file .env. E questo se la maggior parte delle persone fallisce e inizia a strapparsi i capelli.

È molto facile perderlo, ma ad esempio quello che potresti avere nel tuo file .env è qualcosa del genere:

NOME DEL SITO=La mia applicazione Laravel

Questo da solo non funzionerà poiché gli spazi bianchi danneggeranno il file .env.

Quello che devi fare è racchiudere i tuoi valori all'interno delle virgolette in questo modo:

NOME DEL SITO=La mia applicazione Laravel

Questa volta dovrebbe funzionare tutto bene.

Assicurati di cancellare la cache di configurazione ogni volta che apporti una modifica. Possiamo farlo come prima:

configurazione artigianale php:cache
configurazione artigianale php:chiaro