> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Konfiguration

> Erläutert die Konfigurationsdateien, Umgebungsvariablen (.env), den Zugriff auf Konfigurationswerte, Caching, Debug- und Wartungsmodus in Laravel.

## Einführung

Alle Konfigurationsdateien des Laravel-Frameworks liegen im Verzeichnis `config/`. Zu jeder Option gibt es einen Kommentar; öffnen Sie die Dateien und werfen Sie einen Blick auf die verfügbaren Optionen.

In den Konfigurationsdateien werden Datenbank-Zugangsdaten, Mailserver-Einstellungen, die Anwendungs-URL, der Verschlüsselungsschlüssel und viele weitere Kernwerte verwaltet.

```mermaid theme={null}
flowchart LR
    A[".env-Datei"] -->|env()| B["config/-Datei"]
    B -->|config()| C["Anwendung"]
```

### Der Befehl `about`

Mit dem Artisan-Befehl `about` erhalten Sie eine Übersicht über Konfiguration, Treiber und Umgebung Ihrer Anwendung.

```shell theme={null}
php artisan about
```

Möchten Sie nur einen bestimmten Abschnitt sehen, nutzen Sie `--only`.

```shell theme={null}
php artisan about --only=environment
```

Um die Werte einer bestimmten Konfigurationsdatei im Detail anzusehen, ist `config:show` praktisch.

```shell theme={null}
php artisan config:show database
```

## Umgebungskonfiguration (.env)

Häufig möchten Sie Konfigurationswerte je nach Ausführungsumgebung umschalten – zum Beispiel unterschiedliche Cache-Treiber lokal und in Produktion.

Laravel nutzt dafür die PHP-Bibliothek [DotEnv](https://github.com/vlucas/phpdotenv). Bei einer Neuinstallation enthält das Projekt-Root eine Datei `.env.example` mit üblichen Umgebungsvariablen, die während der Installation automatisch nach `.env` kopiert wird.

<Info>
  Bei Teamentwicklung ist es hilfreich, `.env.example` gepflegt in der Repository-Historie zu halten. Mit Platzhalterwerten sehen andere Teammitglieder klar, welche Umgebungsvariablen benötigt werden.
</Info>

### Sicherheit der Umgebungsdateien

<Warning>
  Committen Sie die `.env`-Datei nicht in die Versionskontrolle. Jeder Entwickler und Server benötigt eigene Werte; im Repository besteht bei einem Zwischenfall das Risiko, dass sensible Informationen preisgegeben werden.
</Warning>

Laravel bringt jedoch eine Verschlüsselungsfunktion mit, sodass Sie verschlüsselte Umgebungsdateien sicher in der Versionskontrolle ablegen können.

### Zusätzliche Umgebungsdateien

Beim Start der Anwendung prüft Laravel, ob die Umgebungsvariable `APP_ENV` oder das CLI-Argument `--env` gesetzt ist. Ist dies der Fall und existiert eine Datei `.env.[APP_ENV]`, wird diese geladen. Andernfalls wird die Standard-`.env` verwendet.

### Typen von Umgebungsvariablen

Alle Werte in der `.env`-Datei werden als Strings geparst. Damit `env()` aber unterschiedliche Typen zurückgeben kann, sind einige Spezialwerte vordefiniert.

| Wert in `.env` | Rückgabewert von `env()` |
| -------------- | ------------------------ |
| `true`         | `(bool) true`            |
| `(true)`       | `(bool) true`            |
| `false`        | `(bool) false`           |
| `(false)`      | `(bool) false`           |
| `empty`        | `(string) ''`            |
| `(empty)`      | `(string) ''`            |
| `null`         | `(null) null`            |
| `(null)`       | `(null) null`            |

Werte mit Leerzeichen setzen Sie in doppelte Anführungszeichen.

```ini theme={null}
APP_NAME="My Application"
```

### Umgebungsvariablen abrufen

Alle Variablen aus `.env` werden bei jedem Request in das PHP-Superglobal `$_ENV` geladen. Innerhalb von Konfigurationsdateien holen Sie Werte über die Funktion `env()`.

```php theme={null}
'debug' => (bool) env('APP_DEBUG', false),
```

Das zweite Argument ist der Standardwert, der zurückgegeben wird, wenn die Variable nicht existiert.

### Aktuelle Umgebung ermitteln

Die aktuelle Umgebung wird durch die Variable `APP_ENV` in der `.env`-Datei bestimmt. Sie lässt sich mit der Methode `environment` der Facade `App` abrufen.

```php theme={null}
use Illuminate\Support\Facades\App;

$environment = App::environment();
```

Mit Argumenten prüfen Sie eine bestimmte Umgebung.

```php theme={null}
if (App::environment('local')) {
    // lokale Umgebung
}

if (App::environment(['local', 'staging'])) {
    // lokal oder Staging
}
```

### Umgebungsdateien verschlüsseln

Unverschlüsselte `.env`-Dateien gehören nicht in die Versionskontrolle. Laravel bietet aber eine Verschlüsselungsfunktion.

```shell theme={null}
php artisan env:encrypt
```

Nach dem Aufruf ist die `.env` verschlüsselt und ihr Inhalt liegt in `.env.encrypted`. Der Entschlüsselungsschlüssel wird in der Ausgabe angezeigt – speichern Sie ihn in einem sicheren Passwortmanager.

Zum Entschlüsseln verwenden Sie `env:decrypt`.

```shell theme={null}
php artisan env:decrypt
```

## Zugriff auf Konfigurationswerte

Mit der Facade `Config` oder der globalen Funktion `config()` greifen Sie überall in Ihrer Anwendung auf Konfigurationswerte zu. Sie verwenden die „Punkt"-Notation aus Dateiname und Optionsname.

```php theme={null}
use Illuminate\Support\Facades\Config;

$value = Config::get('app.timezone');

// Auch über die globale Funktion
$value = config('app.timezone');

// Default-Wert angeben, falls Schlüssel fehlt
$value = config('app.timezone', 'Asia/Tokyo');
```

Zur Laufzeit setzen Sie Werte über `Config::set()` oder indem Sie ein Array an `config()` übergeben.

```php theme={null}
Config::set('app.timezone', 'America/Chicago');

config(['app.timezone' => 'America/Chicago']);
```

Es gibt auch typisierte Getter, die eine Ausnahme werfen, wenn der Typ nicht passt.

```php theme={null}
Config::string('config-key');
Config::integer('config-key');
Config::float('config-key');
Config::boolean('config-key');
Config::array('config-key');
Config::collection('config-key');
```

## Konfigurations-Cache

Für bessere Performance können Sie alle Konfigurationsdateien in einer Datei zwischenspeichern.

```shell theme={null}
php artisan config:cache
```

Der Befehl kombiniert alle Konfigurationsoptionen in einer Datei, die das Framework besonders schnell laden kann.

<Warning>
  Führen Sie `config:cache` als Teil Ihres Produktions-Deployments aus. Während der lokalen Entwicklung ändern sich Konfigurationen häufig – dort sollten Sie ihn nicht ausführen.
</Warning>

Sobald der Cache existiert, wird die `.env`-Datei bei Anfragen oder Artisan-Aufrufen nicht mehr geladen. `env()` liefert dann nur noch systemseitige Umgebungsvariablen.

<Tip>
  Rufen Sie `env()` daher ausschließlich aus Dateien im Verzeichnis `config/` auf. Im Rest Ihrer Anwendung greifen Sie über `config()` auf Werte zu.
</Tip>

Den Cache leeren Sie mit `config:clear`.

```shell theme={null}
php artisan config:clear
```

### Konfigurationsdateien veröffentlichen

Viele Konfigurationsdateien liegen bereits im Verzeichnis `config/`, aber einige wie `cors.php` oder `view.php` sind standardmäßig nicht sichtbar.

Zum Veröffentlichen verwenden Sie `config:publish`.

```shell theme={null}
php artisan config:publish

php artisan config:publish --all
```

## Debug-Modus

Die Option `debug` in `config/app.php` legt fest, wie viele Fehlerinformationen Nutzern angezeigt werden. Sie folgt standardmäßig dem Wert von `APP_DEBUG` in `.env`.

<Warning>
  **Setzen Sie `APP_DEBUG` in Produktion immer auf `false`.** Bleibt der Wert auf `true`, könnten sensible Konfigurationsdaten an Endnutzer gelangen.
</Warning>

```ini theme={null}
# Lokale Entwicklung
APP_DEBUG=true

# Produktion
APP_DEBUG=false
```

## Wartungsmodus

Im Wartungsmodus wird für jede Anfrage eine benutzerdefinierte View angezeigt. So können Sie die Anwendung während Updates oder Wartungsarbeiten vorübergehend „deaktivieren".

### Wartungsmodus aktivieren

```shell theme={null}
php artisan down
```

Mit der Option `--refresh` wird der Browser nach der angegebenen Zeit automatisch neu geladen.

```shell theme={null}
php artisan down --refresh=15
```

Die Option `--retry` wird als Wert für den HTTP-Header `Retry-After` verwendet.

```shell theme={null}
php artisan down --retry=60
```

### Wartungsmodus umgehen

Über ein Secret-Token gewähren Sie einzelnen Nutzern Zugang.

```shell theme={null}
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
```

Mit `--with-secret` erzeugt Laravel das Token automatisch.

```shell theme={null}
php artisan down --with-secret
```

### Wartungsmodus in Multi-Server-Setups

Standardmäßig verwaltet Laravel den Wartungsmodus dateibasiert. Bei mehreren Servern ist die cachebasierte Variante praktisch.

```ini theme={null}
APP_MAINTENANCE_DRIVER=cache
APP_MAINTENANCE_STORE=database
```

### Wartungs-View vorab rendern

Wenn Sie während eines Deployments `php artisan down` ausführen, könnten Nutzer während des Update-Prozesses Fehler zu Gesicht bekommen. Mit `--render` können Sie die View vorab rendern.

```shell theme={null}
php artisan down --render="errors::503"
```

Alternativ leiten Sie im Wartungsmodus alle Anfragen an eine URL um.

```shell theme={null}
php artisan down --redirect=/
```

### Wartungsmodus deaktivieren

```shell theme={null}
php artisan up
```

<Info>
  Sie können das Standard-Wartungs-Template anpassen, indem Sie `resources/views/errors/503.blade.php` anlegen.
</Info>

<Tip>
  Wenn Sie Downtime vollständig vermeiden möchten, ziehen Sie eine vollständig verwaltete Plattform wie [Laravel Cloud](https://cloud.laravel.com) in Betracht.
</Tip>

## Nächste Schritte

<Card title="Routing" icon="route" href="/de/routing">
  Lernen Sie die Grundlagen des Routings zur Verknüpfung von URLs und Controllern.
</Card>


## Related topics

- [Logging](/de/logging.md)
- [Hashing](/de/hashing.md)
- [Datenbankkonfiguration](/de/database.md)
- [Amazon-Bedrock-Treiber für das Laravel AI SDK](/de/packages/laravel-amazon-bedrock.md)
- [Native-Modus - Benutzerwörterbuch - VOICEVOX für Laravel](/de/packages/laravel-voicevox/native-user-dict.md)
