Manual do PHP
Anterior |  | Próxima

# 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

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

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

Anterior | Principal | Próxima
assert | Acima | extension_loaded