Konfigurationsinformationen
- Konfiguration
Konfiguration
Einführung
Laravel Alle Konfigurationsdateien für das Framework werden im Verzeichnis config
gespeichert. Jede Option wird beschrieben und Sie können diese Dateien jederzeit überprüfen, um sich mit den verfügbaren Konfigurationsoptionen vertraut zu machen.
Umgebungskonfiguration
Es ist oft nützlich, unterschiedliche Konfigurationen für verschiedene Umgebungen zu haben, in denen die Anwendung ausgeführt wird. Beispielsweise möchten Sie möglicherweise lokal einen anderen Cache-Treiber verwenden als den, der vom Produktionsserver verwendet wird.
Laravel macht die Implementierung dieser Funktion mithilfe der PHP-Bibliothek DotEnv von Vance Lucas sehr einfach. In einer neu installierten Laravel-Anwendung enthält das Stammverzeichnis eine .env.example
-Datei. Wenn Laravel über Composer installiert wird, wird diese Datei automatisch in .env
umbenannt. Andernfalls müssen Sie den Dateinamen manuell ändern.
Ihre .env
-Dateien sollten nicht an das Quellcodeverwaltungssystem Ihrer Anwendung übergeben werden, da jeder Entwickler/Server, der Ihre Anwendung verwendet, möglicherweise eine andere Umgebungskonfiguration benötigt. Darüber hinaus stellt dies ein Sicherheitsrisiko dar, wenn ein Eindringling Zugriff auf Ihr Quellcodeverwaltungs-Repository erhält, da alle vertraulichen Anmeldeinformationen offengelegt werden.
Wenn Sie als Team entwickeln, möchten Sie möglicherweise trotzdem die .env.example
-Datei in Ihre Bewerbung aufnehmen. Denn durch Platzhalterwerte in der Beispielkonfigurationsdatei können andere Entwickler im Team klar erkennen, welche Umgebungsvariablen zum Ausführen der Anwendung erforderlich sind. Sie können auch eine .env.testing
-Datei erstellen, die die Werte in der --env=testing
-Datei überschreibt, wenn Sie PHPUnit-Tests ausführen oder Artisan-Befehle mit der Option .env
ausführen.
{tip}
.env
Alle Variablen in der Datei können durch externe Umgebungsvariablen (z. B. Umgebungsvariablen auf Server- oder Systemebene) überschrieben werden.
Umgebungsvariablentyp
.env
Alle Variablen in der Datei werden als Zeichenfolgen geparst, sodass einige Beibehaltungswerte erstellt werden Damit Sie mehr Variablentypen von env()
-Funktionen zurückgeben können:
.env 值 | env() 值 |
---|---|
true | (bool) true |
(true) | (bool) true |
false | (bool) false |
(false) | (bool) false |
empty | (string) '' |
(empty) | (string) '' |
null | (null) null |
(null) | (null) null |
Wenn Sie eine Umgebungsvariable mit einem Wert definieren müssen, der Leerzeichen enthält, können Sie dies tun, indem Sie den Wert in doppelte Anführungszeichen setzen.
APP_NAME="我的 应用"
Umgebungskonfiguration abrufen
Wenn die Anwendung eine Anfrage erhält, werden alle in der .env
-Datei aufgeführten Variablen in PHPs Super geladen globale Variable $ _ENV
. Sie können die Werte dieser Variablen mit der Funktion env
abrufen. Wenn Sie sich die Konfigurationsdatei von Laravel ansehen, werden Sie tatsächlich feststellen, dass mehrere Optionen diese Funktion bereits verwenden:
'debug' => env('APP_DEBUG', false),
Der zweite Wert, der an die Funktion env
übergeben wird, ist der „Standardwert“. Wenn für den angegebenen Schlüssel keine Umgebungsvariable vorhanden ist, wird dieser Wert verwendet.
Bestimmen der aktuellen Umgebung
Die aktuelle Umgebung der Anwendung wird durch die Variable .env
in der Datei APP_ENV
bestimmt. Sie können über die App
-Methode in der environment
-Fassade auf diesen Wert zugreifen:
$environment = App::environment();
Sie können auch Argumente an die environment
-Methode übergeben, um zu überprüfen, ob die aktuelle Umgebungskonfiguration mit dem angegebenen Wert übereinstimmt. Diese Methode gibt true
zurück, wenn sie mit dem angegebenen Wert übereinstimmt:
if (App::environment('local')) { // 当前环境是 local } if (App::environment(['local', 'staging'])) { // 当前的环境是 local 或 staging... }
{tip} Die Erkennung der Umgebung, in der sich die Anwendung gerade befindet, kann durch die Umgebungsvariable
APP_ENV
auf Serverebene überschrieben werden. Dies ist nützlich, wenn Sie verschiedene Umgebungen für dieselbe Anwendung konfigurieren, sodass Sie eine bestimmte Umgebung so festlegen können, dass sie mit einem bestimmten Host in Ihrer Serverkonfiguration übereinstimmt.
Umgebungsvariablen auf der Debug-Seite ausblenden
Wenn eine Ausnahme nicht abgefangen wird und die Umgebungsvariable APP_DEBUG
<🎜 ist > , zeigt die Debug-Seite alle Umgebungsvariablen und Inhalte an. In manchen Fällen möchten Sie möglicherweise bestimmte Variablen ausblenden. Sie können dies tun, indem Sie die Option true
in der Konfigurationsdatei config/app.php
festlegen. debug_blacklist
und $_ENV
zur Blacklist hinzufügen: $_SERVER
return [ // ... 'debug_blacklist' => [ '_ENV' => [ 'APP_KEY', 'DB_PASSWORD', ], '_SERVER' => [ 'APP_KEY', 'DB_PASSWORD', ], '_POST' => [ 'password', ], ], ];Zugriff auf den KonfigurationswertSie Mithilfe globaler
-Funktionen kann von überall in der Anwendung problemlos auf Konfigurationswerte zugegriffen werden. Auf Konfigurationswerte kann mithilfe der „Punkt“-Syntax zugegriffen werden, die den Namen der Datei und die Option enthält, auf die zugegriffen werden soll. Sie können auch einen Standardwert angeben, der zurückgegeben wird, wenn die Konfigurationsoption nicht vorhanden ist: config
$value = config('app.timezone');Um den Konfigurationswert zur Laufzeit festzulegen, übergeben Sie ein Array an
Funktionconfig
config(['app.timezone' => 'America/Chicago']);KonfigurationscacheUm die Geschwindigkeit Ihrer Anwendung zu erhöhen, sollten Sie den Artisan-Befehl
verwenden, um alle Konfigurationsdateien zwischenzuspeichern In einer einzigen Datei zwischengespeichert. Dadurch werden alle Konfigurationsoptionen Ihrer Anwendung in einer einzigen Datei zusammengefasst, die dann schnell vom Framework geladen wird. config:cache
Im Allgemeinen sollten Sie den Befehl php artisan config:cache
als Teil Ihrer Produktionsbereitstellungsroutine ausführen. Dieser Befehl sollte nicht in einer lokalen Entwicklungsumgebung ausgeführt werden, da Konfigurationsoptionen während der Anwendungsentwicklung häufig geändert werden müssen.
{note} Wenn Sie den Befehl
config:cache
während der Bereitstellung ausführen, sollten Sie sicherstellen, dass Sie die Funktionenv
nur aus der Konfigurationsdatei heraus aufrufen. Sobald die Konfiguration zwischengespeichert ist, wird die Datei.env
nicht mehr geladen und alle Aufrufe der Funktionenv
gebennull
zurück.
Wartungsmodus
Wenn sich die App im Wartungsmodus befindet, werden alle Anfragen an die App als benutzerdefinierte Ansicht angezeigt. Dies erleichtert das „Herunterfahren“ Ihrer Anwendung bei Aktualisierungen oder Wartungsarbeiten. Wartungsmodusprüfungen sind im Standard-Middleware-Stack der Anwendung enthalten. Wenn sich die Anwendung im Wartungsmodus befindet, wird eine MaintenanceModeException
-Ausnahme mit dem Statuscode 503 ausgelöst.
Um den Wartungsmodus zu aktivieren, führen Sie einfach den folgenden Artisan-Befehl down
aus:
php artisan down
Sie können dem Befehl down
auch die Optionen message
und retry
hinzufügen. Der Wert der Option message
kann zum Anzeigen oder Protokollieren benutzerdefinierter Nachrichten verwendet werden, während der Wert retry
zum Festlegen des Werts von Retry-After
im HTTP-Anfrageheader verwendet werden kann:
php artisan down --message="Upgrading Database" --retry=60
Wird auch im Wartungsmodus verwendet. Die Befehlsoption allow
ermöglicht bestimmten IP-Adressen oder Netzwerken den Zugriff auf die Anwendung:
php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
Um den Wartungsmodus zu deaktivieren, verwenden Sie up
Befehl:
php artisan up
{tip} Sie können die Standardvorlage für den Wartungsmodus anpassen, indem Sie die Vorlagendatei
resources/views/errors/503.blade.php
ändern.
Wartungsmodus und Warteschlangen
Warteschlangenaufgaben werden nicht verarbeitet, während sich die Anwendung im Wartungsmodus befindet. Diese Aufgaben werden weiterhin verarbeitet, nachdem die Anwendung den Wartungsmodus verlässt.
Alternativen zum Wartungsmodus
Der Wartungsmodus kann dazu führen, dass Ihre Anwendung einige Sekunden lang ausfällt (nicht reagiert). Daher können Sie die Verwendung einer Alternative wie Envoyer in Betracht ziehen, um die Ausfallzeit von Laravel auf Null zu reduzieren.