Description
int
dl ( string library )
dl() charge l'extension PHP library
à la volée. Le paramètre library
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.
Cette fonction retourne TRUE en cas de
succès, FALSE en cas d'échec.. Si la fonctionnalité de chargement de module n'est pas
disponible (voir Note), ou a été désactivée (soit en désactivant la directive
enable_dl ou en activant le safe mode
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.
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()).
Depuis PHP 5, la fonction dl() est obsolète
dans tous les SAPI, excepté CLI.
Utilisez les directives d'extensions de chargement
à la place.
Exemple 1. Exemple 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'); } }
// Mais la constante PHP_SHLIB_SUFFIX est disponible depuis PHP 4.3.0 if (!extension_loaded('sqlite')) { $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX); }
?>
|
|
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,
le dossier des extensions est c:\php4\extensions\.
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 (expérimental) 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
<php-install-directory>/lib/php/extension/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO,
i.e.
/usr/local/php/lib/php/extensions/debug-non-zts-20010901
ou
/usr/local/php/lib/php/extensions/no-debug-zts-20010901.
Note :
dl() n'est pas supportée sur les
serveur web multi-threadés. Utilisez la directive extensions
dans votre fichier php.ini lorsque vous vous trouvez dans un
environnement de ce type. Cependant, les versions CGI et
CLI ne sont pas
affectées !
Note :
Depuis PHP 6, cette fonction est désactivée dans tous les SAPIs,
exceptés CLI, CGI et embarqué.
Note :
dl() est sensible à la casse sur les plates-formes Unix.
Note : Cette fonction est désactivée par le safe-mode
Voir aussi
directives de chargement d'extensions et
extension_loaded().