Funções para Opções/Info do PHP
PHP Manual

dl

(PHP 4, PHP 5, PHP 7)

dlCarrega uma extensão do PHP durante a execução

Descrição

bool dl ( string $library )

Carrega a extensão do PHP indicada pelo parâmetro library.

Use extension_loaded() para testar se uma extensão está 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()).

Aviso

Esta função foi removida de algumas SAPIs no PHP 5.3 e removida do PHP-FPM no PHP 7.0.0.

Parâmetros

library

Este parâmetro é somente o nome do arquivo da exdtensão a carregar o qual também depende da sua plataforma. Por exemplo, a extensão sockets (se compilada como módulo compartilhado, não o padrão!) seria chamada sockets.so em plataformas Unix enquanto é chamada php_sockets.dll na plataforma Windows.

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

Windows - Se não for explicitamente definido no php.ini, a extensão é carregada a partir de C:\php4\extensions\ (PHP 4) ou C:\php5\ (PHP 5) por padrão.

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

  • se o PHP foi compilado com --enable-debug ou não
  • se o PHP foi compilado com suporte (experimental) ZTS (Zend Thread Safety) ou não
  • O ZEND_MODULE_API_NO (o número Zend internal module API, o que é basicamente a data onde houve uma mudança maior na API ex. 20010901)
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.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha. Se a funcionalidade de carregar módulos não estiver disponível ou foi desabilitada (por desligar enable_dl ou por habilitar o safe mode no php.ini) então um erro E_ERROR é disparado e a execução é interrompida. Se dl() falhar porque a biblioteca especificada não puder ser carregada, além de retornar FALSE uma mensagem E_WARNING é emitida.

Exemplos

Exemplo #1 Exemplosdl()

<?php
// Example loading an extension based on OS
if (!extension_loaded('sqlite')) {
    if (
strtoupper(substr(PHP_OS03)) === 'WIN') {
        
dl('php_sqlite.dll');
    } else {
        
dl('sqlite.so');
    }
}

// Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0
if (!extension_loaded('sqlite')) {
    
$prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' '';
    
dl($prefix 'sqlite.' PHP_SHLIB_SUFFIX);
}
?>

Changelog

Versão Descrição
7.0.0 dl() foi desabilitado do PHP-FPM.
5.3.9 dl() está habilitado no PHP-FPM, mas com o uso desencorajado.
5.3.0 dl() foi desabilitada em algumas SAPIs por conta de problemas de estabilidade. Somente as SAPIs que permitem dl() são a CLI e Embed. Utilize a Extension Loading Directives nos demais casos.

Notas

Nota:

dl() não é suportada no PHP compilado com suporte ZTS support. Utilize as the diretivas de carregamento de extensões nesse caso.

Nota:

dl() é sensível maiúsculas/minúsculas nas plataformas Unix.

Nota: Está função está desabilitada quando o PHP é rodado sob o safe mode.

Veja Também


Funções para Opções/Info do PHP
PHP Manual