Signatur
Beschreibung
ini_get() liest den zur Laufzeit aktiven Wert einer PHP-Konfigurationsdirektive. Das Ergebnis spiegelt den effektiven Wert wider, der sich aus der php.ini, einer .htaccess-Datei, einem httpd.conf-Eintrag oder einem vorangegangenen ini_set()-Aufruf ergeben kann.
Die Funktion eignet sich besonders dazu, Laufzeitbedingungen zu prüfen – etwa ob display_errors aktiv ist, welchen Wert upload_max_filesize hat oder ob eine bestimmte Extension aktiviert wurde. So können Anwendungen ihr Verhalten dynamisch an die Serverkonfiguration anpassen.
Wichtig: Der Rückgabewert ist immer ein String, auch wenn es sich logisch um einen Boolean oder Integer handelt. Ein deaktivierter Boolean-Wert wird als leerer String '' zurückgegeben, nicht als '0' oder false. Nicht existierende Direktiven liefern ebenfalls einen leeren String – false wird nur zurückgegeben, wenn die Option nicht bekannt ist und der Aufruf komplett fehlschlägt.
Für Byte-Angaben wie memory_limit oder post_max_size liefert die Funktion den Rohstring mit Suffix (z. B. '128M'). Soll mit dem numerischen Wert gerechnet werden, muss das Suffix manuell in Bytes umgerechnet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $option Pflicht | string | Name der php.ini-Direktive, deren Wert abgefragt werden soll, z. B. 'display_errors', 'memory_limit' oder 'date.timezone'. |
Rückgabewert
false), wird ein leerer String '' zurückgegeben. Existiert die angegebene Direktive nicht, wird ebenfalls '' zurückgegeben; false wird nur bei einem echten Fehler beim Abrufen geliefert.Beispiele
Grundlegende Konfigurationswerte abfragen
<?php
// Zeitzone abfragen
$timezone = ini_get('date.timezone');
echo 'Zeitzone: ' . ($timezone !== '' ? $timezone : '(nicht gesetzt)') . PHP_EOL;
// Memory-Limit abfragen
$memLimit = ini_get('memory_limit');
echo 'Memory-Limit: ' . $memLimit . PHP_EOL;
// Fehlermeldungen aktiv?
$displayErrors = ini_get('display_errors');
echo 'display_errors: ' . ($displayErrors === '' ? 'aus' : $displayErrors) . PHP_EOL;
Byte-Suffix in numerischen Wert umrechnen
<?php
/**
* Wandelt einen php.ini-Byte-String (z. B. '128M', '2G') in Bytes um.
*/
function iniToBytes(string $val): int {
$val = trim($val);
$last = strtolower($val[strlen($val) - 1]);
$num = (int) $val;
switch ($last) {
case 'g': $num *= 1024;
// kein break — bewusstes Durchfallen
case 'm': $num *= 1024;
case 'k': $num *= 1024;
}
return $num;
}
$raw = ini_get('memory_limit'); // z. B. '128M'
$bytes = iniToBytes($raw);
echo "memory_limit: {$raw} = " . number_format($bytes) . " Bytes" . PHP_EOL;
$upload = ini_get('upload_max_filesize'); // z. B. '8M'
echo "upload_max_filesize: {$upload} = " . iniToBytes($upload) . " Bytes" . PHP_EOL;
Laufzeitwert nach ini_set() prüfen
<?php
echo 'Vorher: ' . ini_get('display_errors') . PHP_EOL;
ini_set('display_errors', '1');
echo 'Nachher: ' . ini_get('display_errors') . PHP_EOL;
// Wichtig · Fallstricke
Boolean-Falle: Eine auf Off gesetzte Boolean-Direktive wird als leerer String zurückgegeben. Niemals ini_get('display_errors') == false verwenden, da auch der Wert '0' als falsy gilt. Stattdessen explizit auf '' oder '0' prüfen oder den Rückgabewert mit filter_var($val, FILTER_VALIDATE_BOOLEAN) auswerten.
Sicherheit: Sensible Direktiven wie open_basedir oder disable_functions dürfen zwar gelesen werden, aber Ausgaben darüber in Fehlermeldungen oder HTTP-Responses könnten einem Angreifer Einblick in die Serverkonfiguration geben.
Nicht alle Direktiven änderbar: Einige Optionen (z. B. memory_limit) lassen sich per ini_set() zur Laufzeit anpassen, andere (z. B. disable_functions) nicht. ini_get() liefert in jedem Fall den tatsächlich aktiven Wert.