laravel

Laravel non sta leggendo .env file dopo la modifica

Laravel non sta leggendo .env file dopo la modifica

Problema

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

Molte persone hanno cercato di aggiornare i propri .env solo per vedere che quando aggiornano la loro applicazione, il .i valori di configurazione di 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 .env file:

DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

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

'mysql' => [
'database' => env('DB_DATABASE', 'lar'),
'username' => env('DB_USERNAME', 'lar'),
]

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_NOMEUTENTE valori dentro di te .env file. 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 l'utente 'lar'@'localhost'
(usando password: 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('database.connessioni.mysql.Banca dati')
=> “largo”
>>> gg($_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 installazioni di pacchetti di compositori o fanno qualcos'altro.

A meno che tu non sia su Linux (ti dirò perché un po' più tardi), non vedrai nessun 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 l'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 new .valori env senza fare quanto segue.

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

php craft config:cacheca
php craft config: clear

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

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

È molto facile perdere questo, ma ad esempio cosa potresti avere nel tuo .env è qualcosa del genere:

SITE_NAME=La mia applicazione Laravel

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

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

SITE_NAME="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:

php craft config:cache
php craft config: clear
Come utilizzare Xdotool per stimolare i clic del mouse e le sequenze di tasti in Linux
Xdotool è uno strumento da riga di comando gratuito e open source per simulare i clic del mouse e le sequenze di tasti. Questo articolo tratterà una b...
I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...