Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP getenv(): Umgebungsvariablen sicher auslesen und verwenden

Sie befinden sich: Home > Php Tutorial > PHP getenv():...

PHP getenv(): Umgebungsvariablen sicher auslesen und verwenden


Eintrag am:  07.04.2026
Hits / Besucher:  19
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Umgebungsvariablen sind ein bewährtes Mittel, um Konfigurationswerte wie Datenbankpasswörter, API-Keys oder Server-Pfade außerhalb des Quellcodes zu speichern. PHP bietet mit der Funktion getenv() eine einfache Möglichkeit, diese Werte zur Laufzeit auszulesen. In diesem Tutorial lernen Sie, wie getenv() funktioniert, worin sich die Funktion von der Superglobalen $_ENV unterscheidet und wie Sie sensible Daten sicher über Umgebungsvariablen verwalten.

Illustration zum Tutorial: PHP getenv(): Umgebungsvariablen sicher auslesen und verwenden

Der folgende Abschnitt zeigt zunächst, wie die Funktion aufgebaut ist und welche Rückgabewerte sie liefert.

Was ist getenv() in PHP?

Die Funktion getenv() liest den Wert einer Umgebungsvariable aus der lokalen Umgebung des laufenden Prozesses. Sie erwartet den Namen der Variable als String und gibt den zugehörigen Wert zurück. Falls die Variable nicht existiert, liefert sie false.

<?php

$dbHost = getenv('DB_HOST');

if ($dbHost !== false) {
echo 'Datenbank-Host: ' . $dbHost;
} else {
echo 'Variable DB_HOST ist nicht gesetzt.';
}

Seit PHP 7.1 können Sie getenv() auch ohne Parameter aufrufen. In diesem Fall gibt die Funktion ein assoziatives Array mit allen verfügbaren Umgebungsvariablen zurück.

<?php

/* Alle Umgebungsvariablen als Array abrufen (ab PHP 7.1) */
$alleVariablen = getenv();

foreach ($alleVariablen as $name => $wert) {
echo $name . ' = ' . $wert . "\n";
}

getenv() vs. $_ENV: Die wichtigen Unterschiede

Neben getenv() existiert in PHP die Superglobale $_ENV. Beide liefern Zugriff auf Umgebungsvariablen, arbeiten aber unterschiedlich.

Das folgende Diagramm zeigt den Ablauf beim Zugriff auf Umgebungsvariablen über beide Wege.

flowchart TD
    A[PHP-Prozess startet] --> B[Betriebssystem stellt Umgebungsvariablen bereit]
    B --> C["$_ENV wird beim Start befüllt<br>(abhängig von variables_order)"]
    B --> D["getenv() liest direkt<br>aus der lokalen Umgebung"]
    C --> E{"variables_order<br>enthält 'E'?"}
    E -->|Ja| F["$_ENV ist verfügbar"]
    E -->|Nein| G["$_ENV ist leer"]
    D --> H["Wert wird zur Laufzeit gelesen"]

Der entscheidende Unterschied: $_ENV wird beim Start des PHP-Prozesses befüllt und hängt von der Direktive variables_order in der php.ini ab. Fehlt dort der Buchstabe E, bleibt $_ENV leer. Die Funktion getenv() hingegen liest immer direkt aus der Prozessumgebung und ist daher zuverlässiger.

Umgebungsvariablen setzen mit putenv()

Mit der Funktion putenv() können Sie Umgebungsvariablen zur Laufzeit setzen. Der gesetzte Wert gilt nur für die Dauer des aktuellen Requests und wird danach verworfen.

<?php

/* Variable setzen */
putenv('APP_MODE=production');

/* Variable auslesen */
$modus = getenv('APP_MODE');
echo 'Anwendungsmodus: ' . $modus;

/* Variable entfernen */
putenv('APP_MODE');

Beachten Sie, dass putenv() die Variable nur innerhalb des aktuellen PHP-Prozesses verfügbar macht. Andere Prozesse oder nachfolgende Requests haben keinen Zugriff darauf.

Sensible Daten mit Umgebungsvariablen verwalten

Sensible Daten wie API-Keys, Datenbankpasswörter oder Verschlüsselungsschlüssel gehören nicht in den Quellcode. Umgebungsvariablen bieten eine sichere Alternative, weil sie außerhalb des Repositorys gespeichert werden.

<?php

/* Sensible Konfiguration aus Umgebungsvariablen laden */
$config = [
'db_host' => getenv('DB_HOST') ?: 'localhost',
'db_user' => getenv('DB_USER') ?: 'root',
'db_password' => getenv('DB_PASSWORD') ?: '',
'api_key' => getenv('API_KEY') ?: '',
];

if (empty($config['api_key'])) {
throw new RuntimeException('API_KEY ist nicht konfiguriert.');
}

$dsn = 'mysql:host=' . $config['db_host'] . ';dbname=app';
$pdo = new PDO($dsn, $config['db_user'], $config['db_password']);

Durch die Verwendung des Ternär-Operators mit ?: können Sie Standardwerte definieren, falls eine Variable nicht gesetzt ist. Für kritische Werte wie API-Keys empfiehlt sich zusätzlich eine explizite Prüfung mit einer Fehlermeldung.

Umgebungsvariablen in verschiedenen Umgebungen (Apache, CLI, .env)

Je nach Laufzeitumgebung werden Umgebungsvariablen auf unterschiedliche Weise bereitgestellt. Im Apache-Webserver können Sie die Direktive SetEnv in der Virtual-Host-Konfiguration oder in einer .htaccess-Datei verwenden. Im CLI-Modus setzen Sie Variablen direkt in der Shell, bevor Sie das PHP-Skript aufrufen.

Für die lokale Entwicklung haben sich .env-Dateien etabliert. Bibliotheken wie vlucas/phpdotenv lesen diese Dateien automatisch ein und stellen die darin definierten Variablen über getenv() bereit. Eine typische .env-Datei enthält Schlüssel-Wert-Paare im Format VARIABLE=Wert, wobei jede Zeile eine Variable definiert.

Wichtig ist, dass .env-Dateien niemals in die Versionskontrolle eingecheckt werden. Tragen Sie den Dateinamen in Ihre .gitignore ein, um versehentliche Commits zu vermeiden. Stattdessen können Sie eine .env.example bereitstellen, die alle benötigten Variablen ohne echte Werte auflistet.

Fazit

Die Funktion getenv() ist der zuverlässigste Weg, um in PHP auf Umgebungsvariablen zuzugreifen. Im Gegensatz zu $_ENV ist sie unabhängig von der variables_order-Konfiguration und liest Werte direkt aus der Prozessumgebung. In Kombination mit putenv() und .env-Dateien ergibt sich ein flexibles System, das sensible Konfigurationsdaten sicher vom Quellcode trennt. Achten Sie darauf, .env-Dateien niemals ins Repository einzuchecken, und prüfen Sie kritische Variablen immer mit einer expliziten Validierung ab.

 


Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.