Konfiguration
Im Framework sind zwei Möglichkeiten für Konfigurationsoptionen enthalten, die Datei env.php
und der Ordner config
, deren Unterschied im Folgenden erläutert wird.
Die Datei env.php
Die Datei env.php
enthält Umgebungsvariablen und Passwörter, die nicht in die Versionsverwaltung gelangen dürfen. Daher ist diese Datei bereits von Git ausgeschlossen (siehe .gitignore
). In der env.php
sind standardmäßig folgende Optionen definiert, weitere können bei Bedarf ergänzt werden.
app.env
gibt an, in welcher Umgebung sich das Projekt befindet.app.host
gibt an, auf welchen Hosts die Anwendung ausgeführt werden darf (getrennt durch|
). Für eine strengere Einschränkung können Subdomains angegeben werden.app.timezone
gibt an, welche Zeitzone standardmäßig verwendet werden soll.- Die
debug
-Optionen konfigurieren den Debug-Modus. - Die
maint
-Optionen konfigurieren den Wartungsmodus. - Die
log
-Optionen definieren das Verhalten der Log-Klasse. - Die
db
-Optionen sind die Verbindungsdaten für die Datenbank.
Auf in der Datei env.php
definierte Optionen kann im Projekt über die Methode App::env($name)
zugegriffen werden, wobei die Indizes durch Punkte getrennt werden. Der Platzhalter *
kann verwendet werden, um ein Array mit allen Optionen unterhalb eines Index zu erhalten.
App::env('db.database') // Name der Datenbank
App::env('db.*') // Array mit allen db-Optionen
Der Ordner config
Der Ordner config
kann eine beliebige Anzahl von Konfigurationsdateien enthalten. Er ist im Gegensatz zur Datei env.php
nicht von der Versionsverwaltung ausgeschlossen, daher sollten hier keine sensiblen Daten wie Passwörter definiert werden.
Auf in diesem Ordner definierte Optionen kann im Projekt über die Methode App::config($name)
zugegriffen werden, wobei die Indizes durch Punkte getrennt werden. Der Teil des Parameters vor dem ersten Punkt muss dem Dateinamen entsprechen. Der Platzhalter *
kann verwendet werden, um ein Array mit allen Optionen unterhalb eines Index zu erhalten.
App::config('framework.language.default')
App::config('framework.*')
Falls für eine Umgebung spezielle Konfiguration benötigt wird, kann im Ordner config
ein Unterordner für diese Umgebung erstellt werden, um einzelne Konfigurationsdateien zu überschreiben. Zum Beispiel hat die Datei config/dev/auth.php
Vorrang vor der Datei config/auth.php
, wenn in der Datei env.php
die Option app.env
auf dev
gesetzt ist.
Umgebung
Die Option app.env
in der Datei env.php
gibt an, in welcher Umgebung sich die Anwendung befindet. Durch das Enum RHRZ\Framework\Enums\Env
werden folgende Umgebungen unterschieden.
Enum-Wert | Beschreibung |
---|---|
Env::Local | Lokale Entwicklung auf dem eigenen Rechner (localhost ), zum Beispiel mit XAMPP |
Env::Dev | Entwicklungsserver, auf dem aktiv am Code gearbeitet wird und somit nicht davon auszugehen ist, dass die Anwendung fehlerfrei funktioniert |
Env::Stage | Staging-Server, der dazu dient, eine lauffähige Version der Anwendung zu testen oder dem Kunden vorzustellen |
Env::Prod | Produktivsystem |
Debug-Modus
Wenn der Wert debug.enabled
in der Datei env.php
auf true
gesetzt ist, werden Fehlermeldungen von PHP ausgegeben, wodurch das Debugging erleichtert wird. Im Produktivsystem sollte der Wert auf false
gesetzt werden, damit Benutzer oder Angreifer keine Informationen über interne Vorgänge der Anwendung durch Fehlermeldungen erlangen können.
Der Zugriff auf den Debug-Modus kann eingeschränkt werden, indem bei der Option debug.token
ein Token definiert wird. Der Debug-Modus ist dann nur aktiv, wenn wenn das Token als Query-Parameter debug
an die URL angehängt wird. Das Token bleibt als Cookie gespeichert, sollte also je nach Bedarf ausgetauscht werden.
Wartungsmodus
Wenn der Wert maint.enabled
in der Datei env.php
auf true
gesetzt ist, befindet sich die Anwendung im Wartungsmodus (maintenance mode). Alle Requests werden dann mit Status 503
(Service Unavailable) abgebrochen.
Der Wartungsmodus kann umgangen werden, indem das in der Option maint.token
definierte Token als Query-Parameter maint
an die URL angehängt wird. Somit kann auch anderen Personen ein Link geschickt werden, der ihnen Zugriff auf die Anwendung ermöglicht. Solange der Wartungsmodus aktiviert ist, bleibt das Token als Cookie gespeichert. Je nach Bedarf sollte das Token bei der nächsten Aktivierung des Wartungsmodus ausgetauscht werden.