Signatur
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
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.';
}
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.