2015-12-22 30 views
34

Dopo l'aggiornamento a Laravel 5.2, nessuno dei miei valori di file .env viene letto. Ho seguito il upgrade instructions; nessuno dei miei file di configurazione è stato modificato tranne auth.php. Erano tutti lavorando bene nel precedente versione, 5.1.19Laravel 5.2 non sta leggendo il file env

.env contiene valori come

DB_DATABASE=mydb 
DB_USERNAME=myuser 

config/database.php contiene

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

ottengo questo errore:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) 

Chiaramente non tirando dentro la mia configurazione ENV. Questo riguarda tutti i miei file di configurazione, inclusi i terzi come bugsnag.

Ho anche provato

php artisan config:clear 
php artisan cache:clear 

Aggiornamento

Cercando php artisan tinker

>>> env('DB_DATABASE') 
=> null 
>>> getenv('DB_DATABASE') 
=> false 
>>> config('database.connections.mysql.database') 
=> "forge" 
>>> dd($_ENV) 
[] 

Ho provato ad installare una nuova copia di laravel 5.2. Fondamentalmente ho copiato solo nella mia cartella "app"; non sono inclusi pacchetti aggiuntivi di compositore. Sto ancora avendo lo stesso problema. Ho altri progetti Laravel 5.2 sullo stesso server che stanno funzionando bene.

+0

Sei sicuro il file .env viene nominato solo .env? Non .env.example? –

+0

Andrew stai modificando il file .env tramite l'interfaccia di forge o caricandolo? –

+0

@JamesElliott si è '.env' – andrewtweber

risposta

25

Wow. Buon dolore E 'perché ho avuto un valore di ENV con uno spazio in esso, non è circondato da citazioni

Questo

SITE_NAME=My website 

cambiato a questo

SITE_NAME="My website" 

riparato. Penso che questo abbia a che fare con Laravel 5.2 ora aggiornando vlucas/phpdotenv da 1.1.1 a 2.1.0

+0

Lo stesso penso - sembra che gli spazi causino problemi in ".env" sotto 5.2 dove come in 5.1 no. – thomthom

+3

E questo è uno dei miei (molti) bugbear con Laravel: ha l'abitudine di ignorare a volte silenziosamente e accettare una varietà di configurazioni e/o altri tipi di errori, senza alcuna indicazione che qualcosa è andato storto.Dato, questo potrebbe essere una "caratteristica" di 'phpdotenv', ma Laravel sa ancora che c'è un file' .env' che deve essere incluso, e che non ha avuto successo, ma non si preoccupa di dirlo a nessuno. – dKen

13

Se una qualsiasi delle tue variabili .env contiene uno spazio bianco, assicurati di inserirle tra virgolette. Per esempio:

SITE_NAME="My website"

Non dimenticare di svuotare la cache prima del test:

php artisan config:cache; 
php artisan config:clear; 
39

dalla Gazzetta laravel 5.2 Note di aggiornamento:

If you are using the config:cache command during deployment, you must make sure that you are only calling the env function from within your configuration files, and not from anywhere else in your application.

If you are calling env from within your application, it is strongly recommended you add proper configuration values to your configuration files and call env from that location instead, allowing you to convert your env calls to config calls.

Riferimento: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

+8

'php artisan config: cache' l'ha risolto per me - nient'altro aveva aiutato. Nemmeno 'php artisan config: clear' - grazie! – kair

+7

Laravel 5.3 'php artisan config: clear' è l'unica cosa che ha funzionato per me – Peon

+2

Laravel 5.4 - distribuito su un VPS:' php artisan config: clear' ha funzionato per me. Non ho fatto la configurazione: cache prima quindi mi è sembrato un po 'strano che dovessi cancellare la cache. – Antonio

3

Ho perso questo nell'istruzione di aggiornamento ioni:

Add an env configuration option to your app.php configuration file that looks like the following: 'env' => env('APP_ENV', 'production')

Aggiunta di questa linea ha ottenuto il file locale .env da leggere in modo corretto.

+1

Suppongo di aver ricevuto lo stesso errore, poiché la mia app era Laravel 4, quindi aggiornato a 5.0, quindi a 5.1, ecc. Probabilmente non è stato aggiunto questo valore nel mio app.php. Grazie per avermi salvato un sacco di tempo. Ecco un upvote! –

14

Ho avuto un problema simile nel mio config/services.php e ho risolto utilizzando config clear e optimize comandi:

php artisan config:clear 
php artisan optimize 
+1

ottimizzare ha fatto il trucco per me – vivoconunxino

+0

ottimizzare mi ha annoiato. Saluti!!! –

+0

Ottimizza il lavoro per me grazie uomo: D –

2

supplementari anche a quello che @andrewtweber suggerito assicurarsi che non si dispone di spazi tra il KEY = e il valore meno che non sia tra virgolette

.env file di esempio:

... 
SITE_NAME= My website 
MAIL_PORT= 587 
MAIL_FROM_NAME= websitename 
... 

a:

... 
SITE_NAME="My website" 
MAIL_PORT=587 
MAIL_FROM_NAME=websitename 
... 
4

La semplicità è il potere:

php artisan config:cache 

riceverà:

cache di configurazione eliminato!

Configurazione memorizzata nella cache correttamente!

2

ho risolto questo problema la generazione di una nuova chiave con il comando: php artisan key:generate

5

periodo questo:

php artisan config:clear 
php artisan cache:clear 

o
php artisan config:cache

2

mi sono imbattuto in questo stesso problema sul mio locale e Ho provato tutte le risposte qui ma inutilmente. Solo questo ha funzionato per me, php artisan config:clear e restart server. Funziona come un fascino!

+0

No, anche questo non ha funzionato per me. –

+0

@RameshMhetre prova 'php artisan config: cache',' php artisan config: clear' quindi 'php artisan cache: clear' – dexterb

+1

Grazie, ho avuto un altro problema. Ho risolto, grazie! –

1

delete cache utilizzando:

php artisan config:clear 
    php artisan config:cache 
+0

Grazie, mi aiuta davvero. Resta benedetto –