Signatur
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_nameundopcache_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
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.';
}
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.