Maison php教程 PHP开发 Explorez le problème selon lequel Laravel utilise la fonction env pour lire les variables d'environnement comme nulles

Explorez le problème selon lequel Laravel utilise la fonction env pour lire les variables d'environnement comme nulles

Mar 24, 2017 pm 03:11 PM

Problème trouvé

Dans le projet Laravel, si vous exécutez la commande php artisan config:cache pour mettre en cache le fichier de configuration, dans Tinker (Tinker est une interface de ligne de commande interactive fournie avec Laravel), la valeur de la variable d'environnement lue à l'aide de la fonction env est nulle. Elle ne peut être lue qu'après avoir vidé le cache de configuration en exécutant php artisan config:clear. Pourquoi cela ?

Découvreons

Ouvrez le fichier .env et voyez, ceux-ci sont précieux :

APP_ENV=local
APP_KEY=base64:JHE5bOkRg283uT0n1Zq/GgvGEer8ooYiB42/wIcCyvo=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://www.tanteng.me
  
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tanteng.me
DB_USERNAME=homestead
DB_PASSWORD=secret
Copier après la connexion


Comme le montre l'image :

Explorez le problème selon lequel Laravel utilise la fonction env pour lire les variables denvironnement comme nulles

Quelle est la raison ?

Dans Laravel, si vous exécutez la commande php aritisan config:cache, Laravel "compilera" et intégrera tous les fichiers de configuration du répertoire app/config dans un fichier de configuration de cache dans bootstrap/cache/config.php . Chaque fichier de configuration peut lire les variables d'environnement via la fonction env, qui peut être lue ici. Mais une fois que vous avez ce fichier de configuration du cache, vous ne pouvez pas lire les variables d'environnement en utilisant la fonction env ailleurs, donc null.

Jetons un coup d'œil à ce code, Illuminate/Foundation/Bootstrap/DetectEnvironment php ligne 18 :

public function bootstrap(Application $app)
{
 if (! $app->configurationIsCached()) {
 $this->checkForSpecificEnvironmentFile($app);
  
 try {
  (new Dotenv($app->environmentPath(), $app->environmentFile()))->load();
 } catch (InvalidPathException $e) {
  //
 }
 }
}
Copier après la connexion

Cette méthode s'exécutera après le démarrage du framework. Ce code montre que si un fichier de configuration du cache existe, les variables d'environnement ne seront pas définies et la configuration lira le fichier de configuration du cache. ne plus être lu.

Par conséquent, lors de la lecture de fichiers de configuration ailleurs dans le répertoire app/config, n'utilisez pas la fonction env pour lire les variables d'environnement. De cette façon, une fois que vous aurez exécuté php artisan config:cache, la fonction env ne fonctionnera pas. . Toutes les variables d'environnement à utiliser sont lues via env dans le fichier de configuration dans le répertoire app/config. Si les variables d'environnement sont utilisées ailleurs, le fichier de configuration est lu uniformément au lieu d'utiliser la fonction env.

Résumé

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra être utile aux études ou au travail de chacun. Si vous avez des questions, vous pouvez partir. un message à communiquer.

Pour plus d'informations sur Laravel utilisant la fonction env pour lire les variables d'environnement nulles, veuillez faire attention au site Web PHP chinois pour les articles connexes !

Articles associés :

Dans le framework Laravel, quelle est la différence entre {{url}} et {{asset}} ?

laravel L'utilisation de routes nommées dans

Une note sur la redirection de la route Laravel

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)