Forum und email

dl

(PHP 4, PHP 5)

dl — Carga una extensión PHP en tiempo de ejecución

Descripción

int dl ( string $biblioteca )

Carga la extensión PHP dada por el parámetro biblioteca .

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

Lista de parámetros

biblioteca

Este parámetro 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.

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.

Valores retornados

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.

Ejemplos

Example#1 Ejemplos de dl()

<?php
// Ejemplo de carga de una extensión en base al SO
if (!extension_loaded('sqlite')) {
    if (
strtoupper(substr(PHP_OS03)) === 'WIN') {
        
dl('php_sqlite.dll');
    } else {
        
dl('sqlite.so');
    }
}

// O, usando la constante PHP_SHLIB_SUFFIX que está disponible a
// partir de PHP 4.3.0
if (!extension_loaded('sqlite')) {
    
$prefijo = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' '';
    
dl($prefijo 'sqlite.' PHP_SHLIB_SUFFIX);
}
?>

Notes

Note: 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!

Note: A partir de PHP 5, la función dl() es considerada obsoleta en todas las SAPI excepto CLI. Use el método de las Directivas de Carga de Extensiones en su lugar.

Note: A partir de PHP 6 esta función es desahibilatad en todas las SAPIs, excepto CLI, CGI y embed.

Note: dl() es sensible a mayúsculas y minúsculas en plataformas Unix.

Note: Esta función no está habilitada en safe-mode (modo-seguro)