Laravel ne lit pas .Fichier env après modification

Laravel ne lit pas .Fichier env après modification

Problème

Celui-ci si un problème assez courant qui apparaît parmi les nouveaux développeurs de Laravel.

Beaucoup de gens ont essayé de mettre à jour leur .Env fichier juste pour voir que lorsqu'ils actualisent leur application, le .Les valeurs de configuration Env n'apparaissent pas.

Et ce qui est plus intéressant, c'est que, assez souvent, cela apparaîtra après avoir mis à niveau votre version Laravel.

Ainsi, par exemple, vous auriez cela dans votre .fichier env:

Db_database = laraveldb
DB_USERNAME = LARAVELUSER

Puis naturellement, à l'intérieur de la base de données.Fichier PHP que vous auriez ceci:

'mysql' => [
'database' => env ('db_database', 'lar'),
'username' => env ('db_username', 'lar'),
]]

Forge ici signifie des valeurs par défaut. Cela signifie que ces valeurs seront utilisées au cas où vous n'auriez pas fourni votre Db_database et Db_username valeurs à l'intérieur de votre .fichier env. Ces informations seront utiles dans un peu.

Maintenant, comment 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'
(Utilisation du mot de passe: non)

Cela montre clairement que votre application Laravel tire la valeur par défaut de votre Config / base de données.php fichier et non à partir de votre .env .

Avant de faire quoi que ce soit d'autre, vous pouvez également essayer de vérifier ce problème en utilisant également le bricoleur artisanal:

>>> Env ('db_database')
=> null
>>> getenv ('db_database')
=> Faux
>>> Config ('Base de données.Connexions.mysql.base de données')
=> "Lar"
>>> dd ($ _ 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 copie simplement l'ancien dossier d'applications. Ils n'exécutent aucune installation de compositeurs et ne font rien d'autre.

À moins que vous ne soyez sur 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 sont plus susceptibles de réussir.

Effacer votre cache de configuration

Tout d'abord, si vous ne l'avez pas fait, vous devez effacer votre cache de configuration avant de pouvoir faire quoi que ce soit d'autre.

Parce que notre code utilise autant de bibliothèques de nos jours, nous sommes obligés de mettre en cache des choses pour y faire un accès rapide pendant l'exécution.

Personnellement, j'ai 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 croche Recharger l'application avec de nouveaux .Env valeurs sans faire ce qui suit.

Assurez-vous d'effacer votre cache de configuration en exécutant les commandes suivantes:

PHP Artisan Config: Cache
PHP Artisan Config: Clear

Vérifiez les espaces vides dans votre .fichier env

La toute prochaine solution est en termes d'espaces blancs à l'intérieur de votre .fichier env. Et celui-ci si où la plupart des gens échouent et commencent à se déchirer les cheveux.

Il est très facile de manquer cela, mais comme exemple ce que vous pourriez avoir dans votre .Le fichier env est quelque chose comme ceci:

Site_name = mon application Laravel

Cela ne fonctionnera pas seul car les espaces blancs corrompront le .fichier env.

Ce que vous devez faire est d'envelopper vos valeurs à l'intérieur des citations comme ceci:

Site_name = ”My Laravel Application"

Cette fois, tout devrait très bien fonctionner.

Assurez-vous simplement d'effacer votre cache de configuration à chaque fois que vous apportez un changement. Nous pouvons le faire de même qu'avant:

PHP Artisan Config: Cache
PHP Artisan Config: Clear