dl
(PHP 4, PHP 5, PHP 7, PHP 8)
dl — Carga una extensión PHP dinámicamente
Descripción
Utilice la función extension_loaded() para verificar
si una extensión está cargada o no. Esta función funciona tanto con
extensiones nativas como con extensiones cargadas dinámicamente
(vía el php.ini o dl()).
Advertencia
Esta función solo está disponible para los SAPI CLI e integrados,
y el SAPI CGI cuando se ejecuta desde la línea de comandos.
Parámetros
extension_filename
-
Este parámetro es solo el nombre de archivo
de la extensión, que depende de la plataforma. Por ejemplo la extensión
sockets (si compilada como módulo compartido,
y no por defecto), se llamará sockets.so
bajo Unix, y php_sockets.dll bajo Windows.
La carpeta desde la cual se cargan las extensiones depende de la
plataforma:
Windows - Si no se indica explícitamente en el archivo php.ini,
la extensión se carga desde C:\php5\ por defecto.
Unix - Si no se indica explícitamente en el archivo php.ini,
la carpeta de extensiones depende de
-
Si PHP fue compilado con la opción
--enable-debug
o no
-
Si PHP fue compilado con soporte para ZTS
(
Zend Thread Safety) o no
-
de la constante interna
ZEND_MODULE_API_NO
(versión interna de API de módulo Zend, que en realidad es la fecha
en que se realizó una modificación importante de la API, por ejemplo
20010901)
Considerando estos parámetros, la carpeta de extensiones será entonces
<install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO,
por ejemplo
/usr/local/php/lib/php/extensions/debug-non-zts-20010901
o
/usr/local/php/lib/php/extensions/no-debug-zts-20010901.
Valores devueltos
Esta función retorna true en caso de éxito o false si ocurre un error. Si la funcionalidad de carga de módulos no está
disponible, o ha sido desactivada (desactivando la directiva
enable_dl
en el php.ini) se emitirá un E_ERROR y
la ejecución del script será detenida. Si la función
dl() falla porque la biblioteca no pudo ser encontrada,
dl() retornará false y emitirá un mensaje de advertencia
E_WARNING.
Ejemplos
Ejemplo #1 Ejemplos con dl()
<?php
// Carga para todas las plataformas
if (!extension_loaded('sqlite')) {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
dl('php_sqlite.dll');
} else {
dl('sqlite.so');
}
}
// O usar la constante PHP_SHLIB_SUFFIX
if (!extension_loaded('sqlite')) {
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>
Notas
Nota:
dl() es sensible a mayúsculas/minúsculas en plataformas Unix.