Start · Sprachen · PHP · Referenz · apache_getenv

apache_getenv

Funktion

Liest eine Apache-Subprocess_env-Variable und gibt ihren Wert zurück.

seit PHP 4.3.0 Kategorie: misc

Signatur

apache_getenv(string $variable, bool $walk_to_top = false): string|false

Beschreibung

apache_getenv() ermöglicht den Zugriff auf Apache-interne Subprocess-Umgebungsvariablen (subprocess_env), die im Apache-Modul mod_php gesetzt werden. Diese Variablen unterscheiden sich von den normalen Systemumgebungsvariablen und werden von Apache selbst verwaltet, z. B. durch SetEnv- oder PassEnv-Direktiven in der Apache-Konfiguration oder in .htaccess-Dateien.

Der optionale Parameter $walk_to_top steuert, ob die Variable aus dem übergeordneten Anfrage-Kontext gelesen werden soll. Ist er auf true gesetzt, wird die Variable aus dem Top-Level-Request geholt, anstatt aus dem aktuellen Sub-Request. Dies kann relevant sein, wenn PHP innerhalb eines Apache-Sub-Requests ausgeführt wird (z. B. via mod_include).

Die Funktion ist ausschließlich verfügbar, wenn PHP als Apache-Modul (SAPI apache oder apache2handler) betrieben wird. In anderen Umgebungen wie CLI oder FastCGI ist sie nicht vorhanden. Um normale PHP-Umgebungsvariablen zu lesen, sollte stattdessen getenv() verwendet werden.

Typische Einsatzbereiche sind das Auslesen von Konfigurationswerten, die per SetEnv in der Apache-Konfiguration gesetzt wurden, ohne auf $_SERVER oder $_ENV angewiesen zu sein.

Parameter

Name Typ Default Beschreibung
$variable Pflicht string Name der Apache-Subprocess-Umgebungsvariable, deren Wert abgefragt werden soll.
$walk_to_top bool false Gibt an, ob die Variable aus dem Top-Level-Request gelesen werden soll. Nützlich bei verschachtelten Apache-Sub-Requests.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Wert der Subprocess-Umgebungsvariable als string zurück. Falls die Variable nicht gesetzt ist oder nicht gefunden wird, wird false zurückgegeben.

Beispiele

Lesen einer per SetEnv gesetzten Apache-Variable

<?php
// Apache-Konfiguration enthält z. B.: SetEnv APP_ENV production

$env = apache_getenv('APP_ENV');

if ($env !== false) {
    echo 'Umgebung: ' . htmlspecialchars($env);
} else {
    echo 'Variable nicht gefunden.';
}
Umgebung: production

Variable aus Top-Level-Request lesen (walk_to_top)

<?php
// In einem Apache-Sub-Request (z. B. via mod_include)
// Liest die Variable aus dem übergeordneten Haupt-Request

$value = apache_getenv('SITE_CONFIG', true);

if ($value !== false) {
    echo 'Konfig-Wert: ' . htmlspecialchars($value);
} else {
    echo 'Keine Variable im Top-Level-Request gefunden.';
}

// Wichtig · Fallstricke

SAPI-Abhängigkeit: apache_getenv() ist nur verfügbar, wenn PHP als Apache-Modul läuft (apache2handler). Beim Einsatz unter CLI, FPM oder anderen SAPIs existiert die Funktion nicht und führt zu einem fatalen Fehler. Vor der Verwendung kann mit function_exists('apache_getenv') geprüft werden, ob die Funktion verfügbar ist.

Sicherheit: Werte aus Umgebungsvariablen sollten vor der Ausgabe immer mit htmlspecialchars() escaped werden, um XSS-Angriffe zu verhindern, falls die Werte aus externen Quellen stammen.

Alternative: In den meisten Fällen sind per SetEnv gesetzte Variablen auch über $_SERVER, $_ENV oder getenv() zugänglich und sollten bevorzugt werden, da diese SAPI-unabhängig funktionieren.