Signatur
Beschreibung
extension_loaded() gibt true zurück, wenn die angegebene PHP-Erweiterung im aktuellen PHP-Prozess verfügbar ist, andernfalls false. Die Funktion ist damit das primäre Mittel, um vor dem Aufruf erweiterungsspezifischer Funktionen oder Klassen sicherzustellen, dass die benötigte Extension tatsächlich geladen wurde.
Typische Anwendungsfälle sind Kompatibilitätsprüfungen in Bibliotheken, Installationsroutinen und Frameworks, die optional auf bestimmte Extensions zurückgreifen (z. B. curl, gd, intl, pdo), sowie das Ausgeben hilfreicher Fehlermeldungen, wenn eine notwendige Extension fehlt, anstatt einen fatalen Fehler zu riskieren.
Der Extensionsname ist case-insensitiv; 'PDO', 'pdo' und 'Pdo' werden gleich behandelt. Für integrierte Extensions (Core-Extensions wie date, pcre oder spl) liefert die Funktion ebenfalls true. Eine Liste aller geladenen Extensions erhält man mit get_loaded_extensions().
Zu beachten ist, dass das Laden einer Extension über dl() zur Laufzeit ebenfalls sofort von extension_loaded() erkannt wird. In Produktionsumgebungen sollten benötigte Extensions jedoch fest in der php.ini konfiguriert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $extension Pflicht | string | Name der zu prüfenden PHP-Erweiterung (z. B. 'curl', 'gd', 'mbstring'). Groß-/Kleinschreibung wird ignoriert. |
Rückgabewert
true zurück, wenn die Extension geladen ist, andernfalls false.Beispiele
Abhängigkeit prüfen und sinnvolle Fehlermeldung ausgeben
<?php
if (!extension_loaded('gd')) {
throw new RuntimeException(
'Die GD-Bibliothek ist nicht verfügbar. Bitte aktiviere die PHP-Extension "gd" in der php.ini.'
);
}
// Nur hier kann sicher auf GD-Funktionen zugegriffen werden
$image = imagecreatetruecolor(200, 100);
imagepng($image, '/tmp/test.png');
imagedestroy($image);
echo 'Bild wurde erfolgreich erstellt.';
Optionale Extension benutzen – Fallback-Logik
<?php
$text = 'Héllo Wörld';
if (extension_loaded('mbstring')) {
// Bevorzugte Methode bei verfügbarem mbstring
$length = mb_strlen($text, 'UTF-8');
echo 'Länge (mb_strlen): ' . $length;
} else {
// Einfacher Fallback – kann bei Multibyte-Zeichen ungenau sein
$length = strlen($text);
echo 'Länge (strlen, Fallback): ' . $length;
}
Mehrere Extensions auf einmal prüfen
<?php
$required = ['pdo', 'pdo_mysql', 'json', 'mbstring'];
$missing = [];
foreach ($required as $ext) {
if (!extension_loaded($ext)) {
$missing[] = $ext;
}
}
if (!empty($missing)) {
echo 'Fehlende Extensions: ' . implode(', ', $missing) . PHP_EOL;
} else {
echo 'Alle benötigten Extensions sind geladen.' . PHP_EOL;
}
// Wichtig · Fallstricke
Case-Insensitivität: Der Extensionsname wird intern in Kleinbuchstaben verglichen. Dennoch empfiehlt es sich, den offiziellen Kleinschreibungs-Namen zu verwenden (z. B. 'openssl' statt 'OpenSSL'), um den Code lesbarer zu halten.
Zend-Extensions: Extensions, die als Zend-Extension geladen werden (z. B. opcache, xdebug), werden von extension_loaded() ebenfalls erkannt, sofern sie sich korrekt als PHP-Extension registrieren. Im Zweifelsfall kann phpinfo() oder get_loaded_extensions() zur Verifizierung herangezogen werden.
Sicherheitshinweis: Verlasse dich nicht allein auf extension_loaded(), um sicherheitskritische Features (z. B. openssl für Verschlüsselung) zu prüfen. Stelle sicher, dass die Extension in der Produktionsumgebung fest aktiviert ist und nicht erst dynamisch zur Laufzeit geladen wird.