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.
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
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 fonctionenv
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 appelezenv
à partir de cet emplacement, vous permettant ainsi de convertir vos appelsenv
àconfig
appels.
Référence: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
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;
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
lance ça:
php artisan config:clear
php artisan cache:clear
puis
php artisan config:cache
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
La simplicité est le pouvoir:
php artisan config:cache
Vous allez recevoir:
Cache de configuration effacé!
Configuration mise en cache avec succès!
J'ai eu le même problème sur l'environnement local, j'ai résolu par
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!
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
...
J'ai résolu ce problème en générant une nouvelle clé à l'aide de la commande: php artisan key:generate
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.
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
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.
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!
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.
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.
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.
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!
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
Pour moi ce qui suit a fonctionné