Problem gefunden
Wenn Sie im Laravel-Projekt den Befehl php artisan config:cache ausführen, um die Konfigurationsdatei zwischenzuspeichern, in Tinker (Tinker ist eine interaktive Befehlszeilenschnittstelle, die mit Laravel geliefert wird), Der Wert der mit der env-Funktion gelesenen Umgebungsvariablen ist null. Sie kann erst gelesen werden, nachdem der Konfigurationscache durch Ausführen von php artisan config:clear geleert wurde.
Lassen Sie es uns herausfinden
Öffnen Sie die .env-Datei und sehen Sie, diese sind wertvoll:
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
Wie im Bild gezeigt:
Was ist der Grund?
Wenn Sie in Laravel den Befehl php aritisan config:cache ausführen, „kompiliert“ Laravel alle Konfigurationsdateien im Verzeichnis app/config und integriert sie in eine Cache-Konfigurationsdatei in bootstrap/cache/config.php . Jede Konfigurationsdatei kann Umgebungsvariablen über die env-Funktion lesen, die hier gelesen werden kann. Aber sobald Sie diese Cache-Konfigurationsdatei haben, können Sie die Umgebungsvariablen nicht mehr mit der env-Funktion an anderer Stelle lesen, also null.
Werfen wir einen Blick auf diesen Code, Illuminate/Foundation/Bootstrap/DetectEnvironment PHP Zeile 18:
public function bootstrap(Application $app) { if (! $app->configurationIsCached()) { $this->checkForSpecificEnvironmentFile($app); try { (new Dotenv($app->environmentPath(), $app->environmentFile()))->load(); } catch (InvalidPathException $e) { // } } }
Diese Methode wird ausgeführt, nachdem das Framework gestartet wurde. Dieser Code zeigt, dass Umgebungsvariablen nicht festgelegt werden und die Konfiguration die Cache-Konfigurationsdatei liest nicht mehr gelesen werden.
Verwenden Sie daher beim Lesen von Konfigurationsdateien an anderer Stelle im Verzeichnis app/config nicht die Funktion env zum Lesen von Umgebungsvariablen. Auf diese Weise funktioniert die Funktion env nicht, sobald Sie php artisan config:cache ausführen . . Alle zu verwendenden Umgebungsvariablen werden über env in der Konfigurationsdatei im Verzeichnis app/config gelesen. Wenn Umgebungsvariablen an anderer Stelle verwendet werden, wird die Konfigurationsdatei einheitlich gelesen, anstatt die Funktion env zu verwenden.
Zusammenfassung
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für alle beim Lernen oder bei der Arbeit hilfreich sein kann eine Botschaft zum Mitteilen.
Weitere Informationen darüber, wie Laravel die env-Funktion zum Lesen von Umgebungsvariablen verwendet, die null sind, finden Sie auf der chinesischen PHP-Website für verwandte Artikel!
Verwandte Artikel:
Was ist im Laravel-Framework der Unterschied zwischen {{url}} und {{asset}}?