dl

(PHP 4, PHP 5, PHP 7, PHP 8)

dlCarga una extensión PHP dinámicamente

Descripción

dl(string $extension_filename): bool

Carga la extensión PHP extension_filename dinámicamente.

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

Devuelve true en caso de éxito o false en caso de 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.

Ver también