web-dev-qa-db-fra.com

Laravel 5.2 ne lit pas le fichier env

Après la mise à niveau vers Laravel 5.2, aucune des valeurs de mon fichier .env n’est lue. J'ai suivi les instructions upgrade ; aucun de mes fichiers de configuration n'a été modifié à l'exception de auth.php. Ils fonctionnaient tous bien dans la version précédente, 5.1.19

.env contient des valeurs telles que

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php contient

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

Je reçois cette erreur:

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

Clairement, ne pas tirer dans ma conf env. Cela affecte chacun de mes fichiers de configuration, y compris des tiers tels que bugsnag.

J'ai aussi essayé

php artisan config:clear
php artisan cache:clear

Mettre à jour

Essayer php artisan tinker

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

J'ai essayé d'installer une nouvelle copie de Laravel 5.2. En gros, je n'ai copié que dans mon dossier "app"; aucun package de compositeur supplémentaire n'est inclus. Toujours avoir le même problème. J'ai d'autres projets Laravel 5.2 sur le même serveur qui fonctionnent bien.

48
andrewtweber

Sensationnel. Bon chagrin C'est parce que j'avais une valeur env avec un espace, pas entre guillemets

Ce 

SITE_NAME=My website

Changé pour cela

SITE_NAME="My website"

Fixe le. Je pense que cela avait à voir avec Laravel 5.2 maintenant la mise à jour de vlucas/phpdotenv de 1.1.1 à 2.1.0

33
andrewtweber

Des notes officielles de mise à niveau de Laravel 5.2:

Si vous utilisez la commande config:cache pendant le déploiement, vous doit vous assurer que vous appelez uniquement la fonction env de dedans vos fichiers de configuration, et pas d’ailleurs dans votre fichier application.

Si vous appelez env à partir de votre application, le message est fortement Il est recommandé d’ajouter des valeurs de configuration appropriées à votre configuration fichiers et appelez env à partir de cet emplacement, vous permettant ainsi de convertir vos appels env à config appels.

Référence: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

54
Gaurav Gupta

Si l'une de vos variables .env contient des espaces, veillez à les entourer de guillemets. Par exemple:

SITE_NAME="My website"

N'oubliez pas de vider votre cache avant de tester:

php artisan config:cache;
php artisan config:clear;
31
benjolly1989

J'ai eu un problème similaire dans mon config/services.php et j'ai résolu en utilisant les commandes config clear et optimize:

php artisan config:clear
php artisan optimize
19
Deric Lima

lance ça: 

php artisan config:clear
php artisan cache:clear

puis
php artisan config:cache

11
Ganesh K

Lorsque vous avez lancé la commande php artisan config:cache, toutes les variables env seront effacées et env() donnera des valeurs nulles, essayez d'exécuter la commande suivante et lancez-y votre env() de nouveau pour capturer toutes les variables env.

php artisan config:clear
6
Shahrukh Anwar

La simplicité est le pouvoir:

php artisan config:cache

Vous allez recevoir:

Cache de configuration effacé!

Configuration mise en cache avec succès!

6
Adam Kozlowski

J'ai eu le même problème sur l'environnement local, j'ai résolu par

  1. php artisan config: effacer
  2. php artisan config: cache
  3. puis en annulant la commande php artisan serve et redémarrez à nouveau.
6
jay_mziray

supprimer le cache en utilisant:

    php artisan config:clear
    php artisan config:cache

J'ai rencontré le même problème chez moi et j'ai essayé toutes les réponses, mais en vain. Seulement cela a fonctionné pour moi, php artisan config:clear et restart server. Fonctionne comme un charme!

3
Dexter Bengil

En plus des suggestions de @andrewtweber, assurez-vous de ne pas laisser d'espaces entre les touches KEY = et value , à moins que ce ne soit entre guillemets

.env fichier par exemple:

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

à:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...
2
Waqleh

J'ai résolu ce problème en générant une nouvelle clé à l'aide de la commande: php artisan key:generate

2
Angel Prieto

Pour moi, cela a fonctionné dans cet ordre:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

Et j'ai essayé tous les repos sans chance.

2
TrOnNe

La même chose se produit quand: le port est dans votre .env local

encore une fois les guillemets fait l'affaire

APP_URL="http://localhost:8000"

et alors

php artisan config:clear
1
Stavros

si vous avez appelé config: cache lors du développement local, vous pouvez annuler cette opération en supprimant le fichier bootstrap/cache/config.php. et c'est un travail pour moi.

1
Payal Pandav

Je fais face au même problème beaucoup de temps au cours du développement larvaire. Certaines fois, env arrête de fonctionner et ne renvoie aucune valeur. cette raison peut être différente qui dépend de votre situation. mais dans mon cas, il y a quelques jours, je cours

 PHP artisan::config:clear

soyez donc prudent en utilisant cette commande. car il va effacer toutes les données de configuration de son cache. donc après cela, il ne retournera aucune valeur. Donc, dans cette situation, vous devez l’utiliser d’abord si vous avez exécuté la commande PHP artisan config :: clear.

php artisan config:cache  // it will cache all data 
php artisan config:clear
Configuration cache cleared!
0
pankaj kumar

si vous avez appelé config: cache pendant le développement local, vous pouvez annuler cette opération en supprimant le fichier bootstrap/cache/config.php. et c'est un travail pour moi.

@Payal Pandav a donné le commentaire ci-dessus.

Je veux raconter une solution de contournement simple. Il suffit de modifier le fichier config.php dans le dossier bootstrap/cache /. Et changez les informations d'identification. Cela a fonctionné pour moi. Veuillez ne pas supprimer ce fichier car il peut contenir d’autres données cruciales dans l’environnement de production.

0
Daya Satheesh

Dans mon cas, laravel 5.7 env('APP_URL') ne fonctionne pas, mais config('app.url') fonctionne. Si j'ajoute une nouvelle variable à env et à config - cela ne fonctionne pas - mais après php artisan config:cache cela commence.

0
Kamil Kiełczewski

J'ai fait l'erreur en faisant dd/die/dump dans le fichier index.php. Cela empêche le système de régénérer les configurations.

Il suffit de vider les fichiers en vue. Les modifications apportées au fichier .env sont mises à jour instantanément.

0
Bing Han

J'ai vécu ça. La raison en était qu’Apache (utilisateur www-data) ne pouvait pas lire .env en raison d’autorisations de fichier . J’ai donc modifié les autorisations de fichier pour que le serveur (Apache) ait lu les autorisations relatives au fichier. Juste ça et boum, tout fonctionnait maintenant!

0
gthuo

Si vous exécutez cette commande php artisan config:cache sur la console, elle stockera tout le contenu du fichier .env dans le cache. Après cette commande, si vous ajoutez du contenu dans un fichier .env, il ne sera pas disponible avant l'exécution de la commande php artisan config:clear

0
Chandrakant Ganji

Pour moi ce qui suit a fonctionné

  • php artisan config: cache
  • php artisan config: effacer
  • php artisan cache: effacer
0
beatusfk