Start · Sprachen · PHP · Referenz · php_ini_scanned_files

php_ini_scanned_files

Funktion

Gibt eine kommaseparierte Liste aller zusätzlichen <code>.ini</code>-Dateien zurück, die PHP beim Start eingelesen hat.

seit PHP 4.3.0 Kategorie: misc

Signatur

php_ini_scanned_files(): string|false

Beschreibung

php_ini_scanned_files() liefert eine kommaseparierte Liste der .ini-Dateien, die PHP aus dem konfigurierten Scan-Verzeichnis (z. B. /etc/php.d/) beim Initialisieren eingelesen hat. Dieses Verzeichnis wird in der Regel zur Build-Zeit mit --with-config-file-scan-dir festgelegt oder über die Umgebungsvariable PHP_INI_SCAN_DIR gesteuert.

Die zurückgegebene Zeichenkette enthält die vollständigen Dateipfade, durch Komma und Zeilenumbruch getrennt. Mit explode() lässt sie sich leicht in ein Array umwandeln, um die einzelnen Dateipfade weiter zu verarbeiten.

Die Funktion ist vor allem in Diagnose- und Deployment-Werkzeugen nützlich: Sie erlaubt es, zur Laufzeit festzustellen, welche Erweiterungs- oder Einstellungsdateien aktiv geladen wurden, ohne das Dateisystem direkt durchsuchen zu müssen.

Wurde PHP ohne Scan-Verzeichnis kompiliert oder sind dort keine .ini-Dateien vorhanden, gibt die Funktion false zurück.

Rückgabewert

Typ
string|false
Beschreibung
Gibt eine kommaseparierte Zeichenkette mit den Pfaden aller eingelesenen .ini-Dateien zurück (jeder Eintrag gefolgt von einem Zeilenumbruch). Ist kein Scan-Verzeichnis konfiguriert oder enthält es keine .ini-Dateien, wird false zurückgegeben.

Beispiele

Alle gescannten ini-Dateien ausgeben

<?php
$scanned = php_ini_scanned_files();

if ($scanned !== false) {
    echo "Eingelesene .ini-Dateien:\n";
    $files = array_filter(array_map('trim', explode(',', $scanned)));
    foreach ($files as $file) {
        echo ' - ' . $file . "\n";
    }
} else {
    echo "Kein zusätzliches ini-Scan-Verzeichnis konfiguriert.\n";
}
Eingelesene .ini-Dateien: - /etc/php.d/10-opcache.ini - /etc/php.d/20-curl.ini - /etc/php.d/20-mbstring.ini

Prüfen, ob eine bestimmte Erweiterungs-ini geladen wurde

<?php
$scanned = php_ini_scanned_files();

if ($scanned !== false) {
    $files = array_map('trim', explode(',', $scanned));
    $opcacheLoaded = array_filter($files, fn(string $f): bool => str_contains($f, 'opcache'));

    if (!empty($opcacheLoaded)) {
        echo "OPcache-ini gefunden: " . implode(', ', $opcacheLoaded) . "\n";
    } else {
        echo "Keine OPcache-ini-Datei im Scan-Verzeichnis gefunden.\n";
    }
} else {
    echo "Kein ini-Scan-Verzeichnis vorhanden.\n";
}
OPcache-ini gefunden: /etc/php.d/10-opcache.ini

// Wichtig · Fallstricke

Das Scan-Verzeichnis kann zur Laufzeit nicht verändert werden; es wird einmalig beim Start des PHP-Prozesses ausgewertet. Soll ein anderes Verzeichnis genutzt werden, muss die Umgebungsvariable PHP_INI_SCAN_DIR vor dem Start des PHP-Prozesses gesetzt sein.

Die Ausgabe enthält nach jedem Dateipfad einen Zeilenumbruch (\n) – beim Aufteilen mit explode(',', ...) sollte jedes Element daher mit trim() bereinigt werden, um führende oder abschließende Whitespace-Zeichen zu entfernen.

Verwandte Diagnosefunktionen sind php_ini_loaded_file() (Pfad zur Haupt-php.ini) und phpinfo() (vollständige Konfigurationsübersicht).