dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Charge une extension PHP à la volée
Description
dl(string $extension_filename
): bool
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()).
Avertissement
Cette fonction n'est disponible que pour les SAPI CLI et intégrés,
et le SAPI CGI lorsqu'il est exécuté à partir de la ligne de commande.
Liste de paramètres
-
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
-
Si PHP a été compilé avec l'option
--enable-debug
ou non
-
Si PHP a été compilé avec le support de ZTS
(
Zend Thread Safety
) ou non
-
de la constante interne
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
)
En prenant ces paramètres en considération, le dossier des extensions
vaut alors
<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.
Valeurs de retour
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
.
Exemples
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);
}
?>
Notes
Note:
dl() est sensible à la casse sur les plates-formes Unix.