Descripción
int
dl ( string biblioteca)
Carga la extensión PHP dada por el
parámetro biblioteca. El
parámetro biblioteca
es únicamente el nombre de archivo de
la extensión a cargar, el cual también depende de
su plataforma. Por ejemplo, la extensión sockets (si fue compilada como
módulo, ¡que no es el comportamiento
predeterminado!) podría
llamarse sockets.so en plataformas Unix,
mientras que se llama php_sockets.dll en la
plataforma windows.
Devuelve TRUE si todo se
llevó a cabo correctamente, FALSE en caso
de fallo. Si la funcionalidad de carga de módulos
no está disponible (ver Nota) o ha sido deshabilitada (ya
sea mediante la desactivación de
enable_dl o activando safe mode en php.ini)
un E_ERROR es producido y se detiene la
ejecución. Si dl() falla porque la
biblioteca especificada no pudo ser cargada, se emite un mensaje
E_WARNING en compañía del
FALSE.
Use extension_loaded() para probar si una
cierta extensión ya se encuentra disponible o no. Esto
funciona tanto con extensiones integradas como con las cargadas
dinámicamente (ya sea mediante php.ini
o dl()).
Ejemplo 1. Ejemplos de dl()
<?php // Ejemplo de carga de una extension en base al SO if (!extension_loaded('sqlite')) { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { dl('php_sqlite.dll'); } else { dl('sqlite.so'); } }
// O, usando la constante PHP_SHLIB_SUFFIX que esta disponible a // partir de PHP 4.3.0 if (!extension_loaded('sqlite')) { $prefijo = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; dl($prefijo . 'sqlite.' . PHP_SHLIB_SUFFIX); } ?>
|
|
El directorio desde donde es cargada la extensión depende
de su plataforma:
Windows - Si no está definida explícitamente en
php.ini, la extensión es cargada
desde c:\php4\extensions\ por defecto.
Unix - Si no está definida explícitamente en
php.ini, el directorio de extensiones predeterminado depende de
si PHP ha sido compilado con --enable-debug o
no
si PHP ha sido compilado con soporte ZTS (Zend Thread Safety)
(experimental) o no
el valor interno ZEND_MODULE_API_NO actual
(número interno de API de módulo Zend, el cual
es básicamente la fecha en la que ocurrié un
cambio significativo en la API de módulo,
p.ej. 20010901)
Tomando en cuenta lo anterior, el directorio recibe el valor
predeterminado
de
<dir-instalacion>/lib/php/extensions/
<debug-o-no>-<zts-o-no>-ZEND_MODULE_API_NO,
p.ej.
/usr/local/php/lib/php/extensions/debug-non-zts-20010901
o
/usr/local/php/lib/php/extensions/no-debug-zts-20010901.
Nota:
La
función dl() no
es soportada en servidores Web multi-hilos. Use la
sentencia extensions en su php.ini cuando
trabaje sobre ese tipo de entornos. Sin embargo, ¡las
versiones CGI
y CLI no
son afectadas!
Nota:
dl() es sensible a mayúsculas y
minúsculas en plataformas Unix.
Vea también Directivas de
Carga de Extensión
y extension_loaded().