(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Charge une extension PHP à la volée
Charge l'extension PHP extension_filename
à la volée.
Utilisez la fonction extension_loaded() pour vérifier qu'une extension est chargée ou non. Cette fonction travaille aussi bien avec les extensions natives qu'avec les extensions dynamiquement chargées (via le php.ini ou dl()).
Cette fonction n'est disponible que pour les SAPICLI et intégrés, et le SAPICGI lorsqu'il est exécuté à partir de la ligne de commande.
extension_filename
Ce paramètre est seulement le nom de fichier de l'extension, qui dépend de votre plate-forme. Par exemple l'extension sockets (si compilée comme module partagé, et non par défaut), sera appelée sockets.so sous Unix, et php_sockets.dll sous Windows.
Le dossier à partir duquel sont chargées vos extensions dépend de votre plate-forme :
Windows - S'il n'est pas explicitement indiqué dans le fichier php.ini, l'extension est chargée depuis C:\php5\ par défaut.
Unix - S'il n'est pas explicitement indiqué dans le fichier php.ini, le dossier des extensions dépend de
--enable-debug
ou non Zend Thread Safety
) ou non ZEND_MODULE_API_NO
(version interne de module d'API Zend, qui est en réalité la date à laquelle une modification importante de l'API a été faite, par exemple 20010901
) <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO
, e.g. /usr/local/php/lib/php/extensions/debug-non-zts-20010901 ou /usr/local/php/lib/php/extensions/no-debug-zts-20010901. Cette fonction retourne true
en cas de succès ou false
si une erreur survient. Si la fonctionnalité de chargement de module n'est pas disponible, ou a été désactivée (en désactivant la directive enable_dl dans le php.ini) une E_ERROR
sera émise et l'exécution du script sera stoppée. Si la fonction dl() échoue parce que la bibliothèque n'a pu être trouvée, dl() retournera false
et émettra un message d'alerte E_WARNING
.
Exemple #1 Exemples avec dl()
<?php
// Chargement pour toutes plates-formes
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// Ou utiliser la constante PHP_SHLIB_SUFFIX
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
Note:
dl() est sensible à la casse sur les plates-formes Unix.