Problème
Celui-ci est un problème assez courant qui apparaît parmi les nouveaux développeurs Laravel.
Beaucoup de gens ont essayé de mettre à jour leur .env juste pour voir que lorsqu'ils actualisent leur application, le .les valeurs de configuration env ne s'affichent pas.
Et ce qui est plus intéressant, c'est que très souvent, cela apparaîtra après la mise à niveau de votre version Laravel.
Ainsi, par exemple, vous auriez ceci dans votre .fichier env :
DB_DATABASE=laraveldbDB_USERNAME=laraveluser
Puis naturellement, à l'intérieur de la config/database.php vous auriez ceci :
'mysql' => ['base de données' => env('DB_DATABASE', 'lar'),
'username' => env('DB_USERNAME', 'lar'),
]
forge signifie ici les valeurs par défaut. Cela signifie que ces valeurs seront utilisées au cas où vous n'auriez pas fourni votre DB_BASE DE DONNÉES et DB_USERNAME valeurs à l'intérieur de votre .fichier env. Cette information sera utile dans un peu.
Maintenant, vous savez que vous avez ce problème spécifique si vous rencontrez l'exception suivante :
PDOException : SQLSTATE[HY000] [1045] Accès refusé pour l'utilisateur 'lar'@'localhost'(avec mot de passe : NON)
Cela montre clairement que votre application Laravel tire la valeur par défaut de votre configuration/base de données.php fichier et non de votre .env .
Avant de faire quoi que ce soit d'autre, vous pouvez également essayer de vérifier ce problème à l'aide de php artisan bricoler :
>>> env('DB_DATABASE')=> nul
>>> getenv('DB_DATABASE')
=> faux
>>> config('base de données.Connexions.mysql.base de données')
=> "lar"
>>> jj($_ENV)
[]
Vous verrez souvent que faire la chose suivante ne fera pas de différence non plus. Cependant, les développeurs essaient de tester leur configuration en exécutant une toute nouvelle installation de Laravel et en copiant simplement l'ancien dossier de l'application. Ils n'exécutent aucune installation de package de composition ou ne font rien d'autre.
Sauf si vous êtes sous Linux (je vous dirai pourquoi un peu plus tard), vous ne verrez aucun changement.
Solution
Comme toujours, il y a beaucoup de choses que vous pouvez faire pour essayer de résoudre ce problème, mais quelques-unes d'entre elles ont plus de chances de réussir.
Videz votre cache de configuration
Tout d'abord, si vous ne l'avez pas fait, vous devez vider votre cache de configuration avant de pouvoir faire autre chose.
Parce que notre code utilise tellement de bibliothèques de nos jours, nous sommes obligés de mettre en cache les choses pour y accéder rapidement pendant l'exécution.
J'ai personnellement eu des problèmes avec cela sur Windows et Mac, cependant, j'ai remarqué que pour une raison quelconque, sur Linux (Ubuntu), ces fichiers de configuration sont soit effacés avec une sorte de crochet, soit ils ne sont pas du tout mis en cache, car j'ai pu recharger l'application avec un nouveau .env valeurs sans faire ce qui suit.
Assurez-vous de vider votre cache de configuration en exécutant les commandes suivantes :
php artisan config:cacheconfig artisan php: effacer
Vérifiez les espaces vides dans votre .fichier env
La solution suivante consiste à avoir des espaces blancs à l'intérieur de votre .fichier env. Et celui-ci si la plupart des gens échouent et commencent à se déchirer les cheveux.
Il est très facile de rater cela, mais comme exemple ce que vous pourriez avoir dans votre .env est quelque chose comme ceci :
SITE_NAME=Mon application LaravelCela seul ne fonctionnera pas car les espaces blancs corrompent le .fichier env.
Ce que vous devez faire est d'envelopper vos valeurs entre guillemets comme ceci :
SITE_NAME = "Mon application Laravel"Cette fois tout devrait bien fonctionner.
Assurez-vous simplement de vider votre cache de configuration à chaque fois que vous apportez une modification. On peut faire comme avant :
php artisan config:cacheconfig artisan php: effacer