laravel

Laravel ne lit pas .env après modification

Laravel ne lit pas .env après modification

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=laraveldb
DB_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:cache
config 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 Laravel

Cela 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:cache
config artisan php: effacer
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...
5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...
Bataille pour Wesnoth 1.13.6 Développement publié
Bataille pour Wesnoth 1.13.6 publiée le mois dernier, est la sixième version de développement de la 1.13.x series et il apporte un certain nombre d'am...