Start · Sprachen · PHP · Referenz · ini_get_all

ini_get_all

Funktion

Gibt alle oder eine gefilterte Menge von PHP-Konfigurationsoptionen zurück, optional mit vollständigen Detailinformationen.

seit PHP 4.2.0 Kategorie: misc

Signatur

ini_get_all(string|null $extension = null, bool $details = true): array|false

Beschreibung

ini_get_all() liest alle derzeit registrierten PHP-INI-Einstellungen aus und gibt sie als assoziatives Array zurück. Jeder Schlüssel entspricht dem Namen einer Konfigurationsoption (z. B. "memory_limit"). Damit eignet sich die Funktion ideal für Diagnose-Skripte, Deployment-Checks oder Administrations-Panels, die den aktuellen PHP-Konfigurationsstatus visualisieren.

Wird $details auf true gesetzt (Standard), enthält jeder Eintrag ein dreielementiges Array mit den Schlüsseln global_value (Wert aus der php.ini), local_value (ggf. per ini_set() überschriebener Laufzeitwert) und access (ein Integer-Bitfeld, das angibt, wo die Option geändert werden darf, z. B. INI_USER, INI_PERDIR, INI_SYSTEM, INI_ALL). Bei $details = false enthält jeder Eintrag nur den aktuell gültigen lokalen Wert als String.

Über den optionalen Parameter $extension lässt sich die Ausgabe auf die INI-Einträge einer bestimmten Extension beschränken. Der Extension-Name muss dabei ohne Dateiendung angegeben werden (z. B. "mbstring" statt "mbstring.so"). Ist die angegebene Extension nicht geladen, gibt die Funktion false zurück.

Die Funktion ist eine schnelle Alternative zu phpinfo() für programmatischen Zugriff auf Konfigurationswerte und wird häufig in Kombination mit ini_get() und ini_set() eingesetzt.

Parameter

Name Typ Default Beschreibung
$extension string|null null Name einer PHP-Extension (z. B. "mbstring"), auf deren INI-Einträge die Ausgabe beschränkt werden soll. null gibt alle Einträge zurück.
$details bool true Wenn true, enthält jeder Eintrag ein Array mit global_value, local_value und access. Bei false wird nur der aktuell gültige lokale Wert als String geliefert.

Rückgabewert

Typ
array|false
Beschreibung
Ein assoziatives Array mit allen INI-Einträgen. Bei aktivierten Details enthält jeder Wert ein Array mit global_value, local_value und access. Gibt false zurück, wenn $extension angegeben wurde, aber nicht geladen ist.

Beispiele

Alle Konfigurationsoptionen mit Details abrufen

<?php
$options = ini_get_all();

foreach ($options as $name => $details) {
    echo sprintf(
        "%s: global=%s, local=%s, access=%d\n",
        $name,
        $details['global_value'],
        $details['local_value'],
        $details['access']
    );
}
// Ausgabe (Auszug):
// memory_limit: global=128M, local=128M, access=7
// max_execution_time: global=30, local=30, access=7
memory_limit: global=128M, local=128M, access=7 max_execution_time: global=30, local=30, access=7 ...

Nur mbstring-Einstellungen ohne Details abrufen

<?php
$mbOptions = ini_get_all('mbstring', false);

if ($mbOptions === false) {
    echo "Die Extension 'mbstring' ist nicht geladen.\n";
} else {
    foreach ($mbOptions as $key => $value) {
        echo "$key = $value\n";
    }
}
// Ausgabe (Auszug):
// mbstring.language = neutral
// mbstring.internal_encoding =
// mbstring.detect_order = auto
mbstring.language = neutral mbstring.internal_encoding = mbstring.detect_order = auto ...

Deployment-Check: Sicherheitskritische Einstellungen prüfen

<?php
$all = ini_get_all(null, false);

$checks = [
    'display_errors'     => '0',
    'expose_php'         => '0',
    'allow_url_include'  => '0',
];

foreach ($checks as $directive => $expected) {
    $actual = $all[$directive] ?? 'unbekannt';
    $status = ($actual === $expected) ? 'OK' : 'WARNUNG';
    echo "[$status] $directive = $actual (erwartet: $expected)\n";
}
[OK] display_errors = 0 (erwartet: 0) [WARNUNG] expose_php = 1 (erwartet: 0) [OK] allow_url_include = 0 (erwartet: 0)

// Wichtig · Fallstricke

Access-Bitfeld: Der Wert access ist eine Kombination aus folgenden Konstanten: INI_USER (1) — per ini_set() änderbar; INI_PERDIR (2) — in .htaccess/php.ini pro Verzeichnis änderbar; INI_SYSTEM (4) — nur in der globalen php.ini; INI_ALL (7) — überall änderbar.

Sicherheitshinweis: Die vollständige Ausgabe von ini_get_all() kann sicherheitskritische Konfigurationsdetails (z. B. Datenbankpfade in DSNs, SMTP-Zugangsdaten) offenlegen. Die Ergebnisse sollten niemals ungefiltert an den Browser ausgegeben werden und nur für authentifizierte Administratoren zugänglich sein.

Deprecation: Ab PHP 8.0 werden einige Extension-Namen für den Parameter $extension möglicherweise nicht mehr als Alias akzeptiert — es ist der kanonische Name zu verwenden.