dl

(PHP 3, PHP 4 , PHP 5)

dl -- Carrega uma extensão do PHP durante a execução

Descrição

int dl ( string library )

Carrega a extensão do PHP indicada pelo parâmetro library. O parâmetro library é somente o nome do arquivo da extensão para carregar o qual depende da sua plataforma. Por exemplo, a extensão sockets (se compilada como módulo compartilhado, o que não é o padrão) deve ser chamado como sockets.so em plataformas Unix enquanto é chamado php_sockets.dll em plataformas Windows.

Retorna TRUE em caso de sucesso ou FALSE em falhas. Se o funcionamento de carregar módulos não estiver disponível (veja a nota) ou for desabilitado (ou por colocar em off enable_dl ou ativando o safe mode no php.ini) um E_ERROR é emitido e a execução é encerrada. Se dl() falhar porque a biblioteca especificada não puder ser carregada, em adição ao FALSE uma mensagem E_WARNING é emitida.

Use extension_loaded() para testar se uma extensão esta disponível ou não. Isto funciona para extensões internas e para aquelas carregadas dinamicamente (através do php.ini ou da função dl()).

Exemplo 1. Exemplos dl()

<?php
// Exemplo de carregar uma extensão baseada no sistema operacional
if (!extension_loaded('sqlite')) {
    if (
strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
        
dl('php_sqlite.dll');
    } else {
        
dl('sqlite.so');
    }
}

// ou usando a constante PHP_SHLIB_SUFFIX disponível a partir do  PHP 4.3.0
if (!extension_loaded('sqlite')) {
    
$prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
    
dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>

O diretório a partir do qual a extensão é carregada depende da sua plataforma:

Windows - Se for explicitamente definido no php.ini, a extensão é carregada a partir de c:\php4\extensions\ por padrão.

Unix - Se não for explicitamente definido no php.ini, o diretório padrão das extensões depende de

Levando em conta o acima, o diretório padrão poderá ser <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, e.g. /usr/local/php/lib/php/extensions/debug-non-zts-20010901 or /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Nota: dl() não e suportado em servidores multi-tarefa. Useextensions no seu php.ini quando estiver operando em um ambiente assim. Em todo o caso, as versões CGI e CLI não são afetadas!

Nota: dl() diferencia maiúsculas e minúsculas em plataformas Unix.

Nota: Esta função é desabilitada no safe-mode

Veja também Extension Loading Directives e extension_loaded().