Start · Sprachen · PHP · Referenz · ini_get

ini_get

Funktion

Gibt den aktuell gültigen Wert einer PHP-Konfigurationsoption (php.ini-Direktive) als String zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

ini_get(string $option): string|false

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

Typ
string|false
Beschreibung
Gibt den aktuellen Wert der Direktive als String zurück. Ist die Option deaktiviert (Boolean 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;
Zeitzone: Europe/Berlin Memory-Limit: 128M display_errors: aus

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;
memory_limit: 128M = 134,217,728 Bytes upload_max_filesize: 8M = 8388608 Bytes

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;
Vorher: Nachher: 1

// 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.