Instalando uma extensão PHP no Windows
Existem duas maneiras de carregar uma extensão PHP no Windows: compilando-a no PHP ou carregando a DLL. Carregar uma extensão pré-compilada é a maneira mais fácil e preferida.
Para carregar uma extensão, ela deve estar disponível como um arquivo .dll no sistema. Todas as extensões são compiladas automaticamente e periodicamente pelo PHP Group (veja a próxima seção para download).
Para compilar uma extensão no PHP, consulte a documentação sobre compilação do código-fonte.
Para compilar uma extensão independente (um arquivo DLL), consulte a documentação sobre compilação do código-fonte. Se a DLL não estiver disponível na distribuição do PHP nem no PECL, pode ser necessário compilá-la antes que a extensão possa ser usada.
Onde encontrar uma extensão?
As extensões do PHP geralmente são chamadas de php_*.dll (onde o asterisco representa o nome da extensão) e estão localizadas no diretório PHP\ext.
O PHP vem com as extensões mais úteis para a maioria dos desenvolvedores. Elas são chamadas extensões nativas do PHP.
Entretanto, se as extensões nativas não fornecerem a funcionalidade necessária, uma extensão que ofereça essa funcionalidade ainda pode ser encontrada no » PECL. A biblioteca comunitária de extensões PHP (PECL) é um repositório de extensões PHP, que fornece um diretório de todas as extensões conhecidas e recursos de hospedagem para download e desenvolvimento de extensões PHP.
Se uma extensão foi desenvolvida para usos específicos, ela pode ser hospedada no PECL para que outras pessoas com as mesmas necessidades possam se beneficiar delas. Um bom efeito colateral é que é uma excelente chance de receber feedbacks, agradecimentos, relatórios de erros e até mesmo correções/patches. Antes de enviar uma extensão para hospedagem no PECL, consulte sobre » Submissão ao PECL.
Qual extensão baixar?
Muitas vezes, haverá várias versões disponíveis de cada DLL:
- Números de versão diferentes (pelo menos os dois primeiros números devem corresponder)
- Versões de thread safety diferentes
- Arquitetura de processador diferente (x86, x64, ...)
- Configurações de depuração diferentes
-
etc.
Lembre-se de que as configurações de extensão devem corresponder a todas as configurações do executável PHP que está sendo usado. O script a seguir informará tudo sobre as configurações do PHP:
Example #1 A função phpinfo()
<?php
phpinfo();
?>
Ou na linha de comando, execute:
drive:\caminho\para\o\executavel\php.exe -i
Carregando uma extensão
A forma mais comum de carregar uma extensão PHP é incluí-la no arquivo de configuração php.ini. Observe que muitas extensões já estão presentes no php.ini e só é preciso remover o ponto e vírgula para ativá-las.
A partir do PHP 7.2.0, o nome da extensão pode ser usado ao invés do nome do arquivo da extensão. Como é independente do sistema operacional é mais fácil, especialmente para iniciantes, essa é a maneira recomendada de especificar as extensões a serem carregadas. Os nomes dos arquivos continuam suportados para compatibilidade com versões anteriores.
;extension=php_extname.dll
extension=php_extname.dll
; A partir do PHP 7.2.0, prefira: extension=extname zend_extension=another_extension
No entanto, isso pode causar confusão em alguns servidores web porque eles não usam o arquivo php.ini localizado junto do executável PHP. Para descobrir onde o arquivo php.ini está, procure seu caminho na função phpinfo():
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\8.2\php.ini
Depois de ativar uma extensão, salve o arquivo php.ini, reinicie o servidor web e verifique a função phpinfo() novamente. A nova extensão agora deve ter sua própria seção.
Resolvendo problemas
Se uma extensão não aparecer na função phpinfo(), os logs devem ser verificados para saber de onde vem o problema.
Se o PHP estiver sendo usado na linha de comando (CLI), os erros de carregamento da extensão podem ser lidos diretamente na tela.
Se o PHP estiver sendo usado com um servidor web, a localização e o formato dos logs irão variar dependendo do software usado. Consulte a documentação do servidor web para localizar os logs, pois isso não está relacionado com o PHP.
Problemas comuns são a localização da DLL e das DLLs das quais ela depende, o valor da diretiva "extension_dir" no arquivo php.ini e incompatibilidades de configuração em tempo de compilação.
Se o problema estiver em uma incompatibilidade de configuração em tempo de compilação, provavelmente a DLL errada foi baixada. Tente baixar novamente a extensão com as configurações corretas. Novamente, a função phpinfo() pode ser de grande ajuda.