dl
(PHP 4, PHP 5)
dl — Carga una extensión de PHP en tiempo de ejecución
Descripción
$library
)
Carga la extensión PHP dada por el parámetro
library.
Utilice la función extension_loaded() para comprobar si la extensión ya está cargada o no. Funciona tanto para extensiones ya integradas en PHP o para extensiones que se han cargado dinámicamente (ya sea a través de php.ini o dl()).
Esta función ha sido eliminada en algunos módulos SAPI en PHP 5.3.
Parámetros
-
library -
Este parámetro es solamente el fichero de la extensión a cargar el cual depende del sistema operativo. Por ejemplo, la extensión sockets (si se compila como librería, no como parte de PHP) Se llamará sockets.so en sistemas Unix mientras que en Windows se llamará php_sockets.dll.
El directorio desde donde la extensión será cargada también depende del sistema operativo:
En Windows - a no ser que se defina explicitamente en php.ini, la extensión será cargada por defecto desde C:\php4\extensions\ (PHP4) o C:\php5\ en (PHP 5).
Unix - a no ser que se defina en php.ini, el directorio de extensiones por defecto depende de
- Si PHP fué compilado con la opción --enable-debug o no
- Si PHP fué comiplado con soporte (experimental) ZTS (Zend Thread Safety) o no
- El módulo interno actual ZEND_MODULE_API_NO (Número interno del API Zend, que es básicamente la fecha en que se produjo un cambio de versión, p.ej. 20010901)
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error. Si la funcionalidad de cargar módulos no está disponible
o ha sido deshabilitada (ya sea activando
enable_dl off o habilitando el modo seguro
en php.ini) Se producirá un E_ERROR
y se parará la ejecucción de PHP. Si dl() falló porque la
librería especificacda no pudo cargarse a demás de FALSE se
producirá un mensaje E_WARNING.
Ejemplos
Ejemplo #1 Ejemplos de dl()
<?php
// En este ejemplo se carga una extensión u otra dependiendo del sistema operativo
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// O si la constante PHP_SHLIB_SUFFIX está disponible desde PHP 4.3.0
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.3.0 | dl() está desactivado en algunos módulos SAPI por problemas de estabilidad. Los únicos modulos SAPI que permiten dl() son: CLI, CGI and Embed. En su lugar usar las directivas Directivas de carga de extensiones |
Notas
Nota:
dl() no se soporta cuando PHP es compilado con soporte ZTS. Use en su lugar Directivas de carga de extensiones instead.
Nota:
dl() es sensible a mayúsculas en sistemas Unix.
Nota: Esta función está deshabilitada cuando PHP se ejecuta en modo seguro.
Ver también
- Directivas de cargas de extensiones
- extension_loaded() - Encontrar si una extensión está cargada