Heim php教程 PHP开发 Untersuchen Sie das Problem, dass Laravel die env-Funktion verwendet, um Umgebungsvariablen als Null zu lesen

Untersuchen Sie das Problem, dass Laravel die env-Funktion verwendet, um Umgebungsvariablen als Null zu lesen

Mar 24, 2017 pm 03:11 PM

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
Nach dem Login kopieren


Wie im Bild gezeigt:

Untersuchen Sie das Problem, dass Laravel die env-Funktion verwendet, um Umgebungsvariablen als Null zu lesen

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) {
  //
 }
 }
}
Nach dem Login kopieren

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}}?

Laravel Die Verwendung benannter Routen in

Ein Hinweis zur Laravel-Routenumleitung

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)