Start · Sprachen · PHP · Referenz · opcache_get_configuration

opcache_get_configuration

Funktion

Gibt ein assoziatives Array mit der aktuellen OPcache-Konfiguration, Direktiven und Blacklist-Einträgen zurück.

seit PHP 5.5.0 Kategorie: misc

Signatur

opcache_get_configuration(): array|false

Beschreibung

opcache_get_configuration() liefert detaillierte Informationen über die aktuelle Konfiguration des OPcache-Bytecode-Caches. Das Ergebnis ist ein mehrdimensionales Array mit drei Schlüsseln: directives, version und blacklist.

  • directives: Enthält alle opcache.*-INI-Direktiven mit ihren aktuell wirksamen Werten (z. B. opcache.memory_consumption, opcache.max_accelerated_files).
  • version: Enthält Versionsangaben wie version, opcache_product_name und opcache_revision.
  • blacklist: Ein Array mit Dateipfaden, die explizit vom Caching ausgeschlossen sind (gemäß opcache.blacklist_filename).

Die Funktion ist besonders nützlich für Diagnose- und Monitoring-Skripte sowie für Admin-Panels, die den aktuellen Zustand und die Einstellungen des OPcache darstellen sollen. Sie ergänzt opcache_get_status(), das Laufzeitstatistiken liefert.

Ist OPcache nicht installiert oder deaktiviert, gibt die Funktion false zurück. Die Verfügbarkeit lässt sich vorab mit function_exists('opcache_get_configuration') prüfen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit den Schlüsseln directives, version und blacklist zurück. Ist OPcache nicht aktiv oder nicht verfügbar, wird false zurückgegeben.

Beispiele

Konfiguration ausgeben und Speicherlimit auslesen

<?php
if (function_exists('opcache_get_configuration')) {
    $config = opcache_get_configuration();

    if ($config !== false) {
        // OPcache-Version ausgeben
        echo 'OPcache-Version: ' . $config['version']['version'] . PHP_EOL;

        // Maximalen Speicher in MB ausgeben
        $memoryMb = $config['directives']['opcache.memory_consumption'];
        echo 'Speicherlimit: ' . $memoryMb . ' MB' . PHP_EOL;

        // Maximale Anzahl gecachter Dateien
        $maxFiles = $config['directives']['opcache.max_accelerated_files'];
        echo 'Max. gecachte Dateien: ' . $maxFiles . PHP_EOL;
    } else {
        echo 'OPcache ist nicht aktiv.';
    }
} else {
    echo 'OPcache ist nicht installiert.';
}
OPcache-Version: 8.3.0 Speicherlimit: 128 MB Max. gecachte Dateien: 10000

Blacklist-Einträge und alle Direktiven anzeigen

<?php
if (function_exists('opcache_get_configuration')) {
    $config = opcache_get_configuration();

    if ($config !== false) {
        // Alle INI-Direktiven tabellarisch ausgeben
        echo '<table border="1">';
        echo '<tr><th>Direktive</th><th>Wert</th></tr>';
        foreach ($config['directives'] as $key => $value) {
            $displayValue = is_bool($value) ? ($value ? 'true' : 'false') : htmlspecialchars((string)$value);
            echo '<tr><td>' . htmlspecialchars($key) . '</td><td>' . $displayValue . '</td></tr>';
        }
        echo '</table>';

        // Blacklist ausgeben
        if (!empty($config['blacklist'])) {
            echo '<h3>Blacklist-Einträge:</h3><ul>';
            foreach ($config['blacklist'] as $entry) {
                echo '<li>' . htmlspecialchars($entry) . '</li>';
            }
            echo '</ul>';
        } else {
            echo '<p>Keine Blacklist-Einträge vorhanden.</p>';
        }
    }
}

// Wichtig · Fallstricke

Sicherheitshinweis: Die Ausgabe von opcache_get_configuration() enthält interne Serverkonfigurationsdetails wie Speicherlimits, Dateipfade und aktivierte Features. Diese Informationen sollten niemals ungeschützt öffentlich zugänglich sein. Schränke den Zugriff auf entsprechende Diagnose-Skripte durch Authentifizierung oder IP-Beschränkung ein.

Die Funktion steht nur zur Verfügung, wenn die OPcache-Extension geladen und in php.ini mit opcache.enable=1 aktiviert ist. Im CLI-Kontext gilt opcache.enable_cli. Prüfe die Verfügbarkeit immer mit function_exists(), bevor du die Funktion aufrufst.

Ab PHP 8.0 wurde OPcache als fester Bestandteil in PHP integriert und standardmäßig mitgeliefert, muss aber weiterhin explizit aktiviert werden.