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
Comme le montre l'image :
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) { // } } }
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}} ?