Forum und email

dl

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

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

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 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

  • 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 falhas. Se a funcionalidade de carregar os módulos não estiver disponível (veja a nota) ou foi desabilitada (ou por desativar enable_dl ou por ativar safe mode no php.ini) um E_ERROR é emitido e a execução é parada. Se dl() falhar porque a bliblioteca especificada mão puder ser carregada, em adição a FALSE uma mensagem E_WARNING é emitida.

Exemplos

Example#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);
}
?>

Notas

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: A partir do PHP 5, a função dl() esta obsoleta em todas as SAPI exceto CLI. Use o método de Diretivas para Carregar Extensões ao invés.

Nota: Desde o PHP 6 esta função esta desabilitada em todas as SAPIs, exceto CLI, CGI e embutida.

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

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