Skip to content

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.

php
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.

php
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-WertBeschreibung
Env::LocalLokale Entwicklung auf dem eigenen Rechner (localhost), zum Beispiel mit XAMPP
Env::DevEntwicklungsserver, auf dem aktiv am Code gearbeitet wird und somit nicht davon auszugehen ist, dass die Anwendung fehlerfrei funktioniert
Env::StageStaging-Server, der dazu dient, eine lauffähige Version der Anwendung zu testen oder dem Kunden vorzustellen
Env::ProdProduktivsystem

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.