Signatur
Beschreibung
get_loaded_extensions() liefert eine Liste aller PHP-Erweiterungen (Extensions), die in der aktuellen PHP-Umgebung kompiliert oder als dynamische Module geladen sind. Dies umfasst sowohl eingebaute Erweiterungen (z. B. json, mbstring) als auch nachträglich über die php.ini geladene Shared Libraries.
Mit dem optionalen Parameter $zend_extensions kann die Abfrage auf Zend-Erweiterungen (z. B. Xdebug, OPcache) umgestellt werden, die intern über die Zend-Engine registriert werden und sich von normalen PHP-Extensions unterscheiden.
Typische Einsatzgebiete sind Kompatibilitätsprüfungen in Installationsroutinen, Debug-Ausgaben oder die dynamische Entscheidung, ob bestimmte Funktionalität verfügbar ist – ergänzend zu extension_loaded(), das gezielt eine einzelne Erweiterung prüft.
Die Reihenfolge der zurückgegebenen Namen ist nicht garantiert. Für eine geordnete Ausgabe empfiehlt sich der Einsatz von sort() auf dem Ergebnis-Array.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $zend_extensions | bool | false | Wenn true, werden statt normaler PHP-Extensions die geladenen Zend-Erweiterungen zurückgegeben (z. B. Xdebug, Zend OPcache). Standardmäßig false für normale PHP-Erweiterungen. |
Rückgabewert
extension_loaded() erwartet (Groß-/Kleinschreibung beachten). Das Array ist niemals false oder null – im Extremfall ein leeres Array.Beispiele
Alle geladenen PHP-Erweiterungen ausgeben
<?php
$extensions = get_loaded_extensions();
sort($extensions);
echo "Geladene PHP-Erweiterungen (" . count($extensions) . "):" . PHP_EOL;
foreach ($extensions as $ext) {
echo ' - ' . $ext . PHP_EOL;
}
Prüfen, ob eine benötigte Erweiterung fehlt
<?php
$required = ['mbstring', 'curl', 'pdo', 'json', 'openssl'];
$loaded = get_loaded_extensions();
$missing = array_diff($required, $loaded);
if (empty($missing)) {
echo "Alle benötigten Erweiterungen sind vorhanden." . PHP_EOL;
} else {
echo "Fehlende Erweiterungen:" . PHP_EOL;
foreach ($missing as $ext) {
echo ' - ' . $ext . PHP_EOL;
}
}
Geladene Zend-Erweiterungen anzeigen
<?php
$zendExtensions = get_loaded_extensions(true);
if (empty($zendExtensions)) {
echo "Keine Zend-Erweiterungen geladen." . PHP_EOL;
} else {
echo "Geladene Zend-Erweiterungen:" . PHP_EOL;
foreach ($zendExtensions as $ext) {
echo ' - ' . $ext . PHP_EOL;
}
}
// Wichtig · Fallstricke
Groß-/Kleinschreibung: Die zurückgegebenen Namen sind so wie die Extensions sich selbst registrieren. So heißt die Extension intern z. B. mbstring (alles klein), während Core mit großem C geschrieben wird. Bei der Verwendung mit extension_loaded() ist diese Funktion case-insensitive, die Ausgabe von get_loaded_extensions() jedoch nicht normalisiert.
Performance: In Produktionsumgebungen sollte diese Funktion nicht in jedem Request aufgerufen werden. Besser einmalig im Bootstrap oder in Installationschecks verwenden und das Ergebnis cachen.
Alternative: Für die Prüfung einer einzelnen Erweiterung ist extension_loaded('name') effizienter als in_array('name', get_loaded_extensions()).