dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Lädt eine PHP-Erweiterung zur Laufzeit
Beschreibung
Verwenden Sie extension_loaded() um zu testen, ob die
gewünschte Erweiterung bereits verfügbar ist oder nicht. Dies funktioniert
sowohl bei eingebauten, als auch bei dynamisch geladenen Erweiterungen
(entweder durch die php.ini, oder mittels dl()).
Warnung
Diese Funktion ist nur für die CLI- und die
eingebetteten SAPIs sowie für die
CGI-SAPI verfügbar, sofern sie
über die Befehlszeile ausgeführt wird.
Parameter-Liste
extension_filename
-
Dieser Parameter ist nur der Dateiname der zu
ladenden Erweiterung, welcher von der Plattform abhängig ist, z. B.
würde die Erweiterung sockets (wenn
als shared module kompiliert, nicht standardmäßig!) auf
Unix-Plattformen sockets.so heißen, und auf
Windows-Plattformen php_sockets.dll.
Das Verzeichnis, von wo aus die Erweiterung geladen wird, hängt von der
Plattform ab:
Windows - Wenn nicht explizit in der php.ini angegeben, wird die
Erweiterung standardmäßig von c:\php5\ geladen.
Unix - Wenn nicht explizit in der php.ini angegeben, hängt das
standardmäßige Verzeichnis ab von:
-
ob PHP mit
--enable-debug
erstellt wurde oder
nicht
-
ob PHP mit ZTS- (Zend Thread Safety) Unterstützung erstellt wurde
oder nicht
-
der aktuellen internen
ZEND_MODULE_API_NO
(Zend-interne Modul-API-Nummer, welche im Grunde das Datum der
letzten größeren Modul-API-Änderung darstellt, z. B.
20010901
).
Das obige in Betracht gezogen, ist das standardmäßige Verzeichnis
<install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO
,
z. B.
/usr/local/php/lib/php/extensions/debug-non-zts-20010901
oder
/usr/local/php/lib/php/extensions/no-debug-zts-20010901.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben. Ist die Funktionalität des Ladens von Modulen nicht
verfügbar, oder wurde sie deaktiviert (durch Deaktivieren von
enable_dl in der php.ini), wird ein
E_ERROR
ausgegeben, und die Ausführung gestoppt.
Scheitert dl(), weil die angegebene Erweiterung nicht
geladen werden konnte, wird zusätzlich zu false
eine
E_WARNING
-Meldung ausgegeben.
Beispiele
Beispiel #1 dl()-Beispiele
<?php
// Beispiel für das Laden einer Erweiterung je nach Betriebssystem
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// Oder unter Verwendung der Konstante PHP_SHLIB_SUFFIX
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
Anmerkungen
Hinweis:
dl() unterscheidet auf Unix-Plattformen zwischen Groß-
und Kleinschreibung.