Manuel PHP
Précédent |  | Suivant

# dl

(PHP 3, PHP 4, PHP 5)

dl -- Charge une extension PHP à la volée

## 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().

Précédent | Sommaire | Suivant
assert | Niveau supérieur | extension_loaded