Instalando uma extensão PHP no Windows

No Windows há duas maneiras de carregar uma extensão PHP: compilando-a no PHP ou carregando por DLL. Carregar uma extensão pré-compilada é a maneira mais fácil e preferível.

Para carregar uma extensão é necessária o arquivo ".dll" apropriado para o seu sistema. Todas as extensões são automaticamente e periodicamente compiladas pelo PHP Group. (veja na próxima seção como baixar).

Para compilar uma extensão no PHP, veja a documentação sobre compilação de código fonte.

Para compilar uma extensão apenas (um arquivo DLL), veja a documentação compilação de código fonte. Se a DLL não estiver anteriormente disponível e nem distribuída no PHP ou PECL, você precisará compila-la antes de usar a extensão.

Onde encontrar uma extensão?

Extensões do PHP normalmente tem o nome "php_*.dll" (onde o asterisco representa o nome da extensão) e elas estão localizadas na pasta "PHP\ext".

O PHP vem acompanhando das extensões mais utilizadas pela maioria dos desenvolvedores. São as chamadas extensões "core" do PHP.

Entretanto, se você precisa de uma funcionalidade não provida por uma extensão core, você ainda pode encontrá-la no PECL. A PHP Extension Community Library (PECL) é um repositório de extensões PHP, que provê um ambiente para todas as extensões conhecidas e hospedagem do downdload e desenvolvimento de extensões PHP.

Se você desenvolveu uma extensão para seus próprios usos, você pode desejar hospedá-la no PECL de forma que outros desenvolvedores com as mesmas necessidades podem se beneficiar do seu tempo. Um belo efeito colateral é que que você pode receber feedbacks, agradecimentos, avisos de erros e até mesmo correções/patchs. Antes de submeter sua extensão para hospedagem no PECL, leia o » Submissão ao PECL.

Qual extensão baixar?

Algumas vezes você encontrará várias versões de uma DLL:

  • Versões numéricas diferentes (pelo menos os dois primeiros números devem bater)
  • Versões de thread safety diferentes
  • Arquiterturas de processador diferentes (x86, x64, ...)
  • Configurações de debug diferentes
  • etc.

Você deve ter em mente que sua extensão precisa bater com todas as configurações do executável do PHP que está utilizando. O scripte seguinte lhe dirá todas as configurações:

Exemplo #1 A função phpinfo()

<?php
phpinfo
();
?>

Ou, na linha de comando, execute:

drive:\\path\to\php\executable\php.exe -i

Carregando uma extensão

O jeito mais comum de carregar uma extensão é incluí-la no seu arquivo php.ini. Veja que muitos extensões já podem estar presentes no php.ini e só é preciso remover o ponto e vígula para ativá-las.

;extension=php_extname.dll
extension=php_extname.dll

Em alguns servidores web podem não utilizar o arquivo php.ini disponibilizado ao lado do seu executável do PHP. Para saber qual php.ini está sendo utilizado veja seu caminho através da função phpinfo():

Configuration File (php.ini) Path  C:\WINDOWS
Loaded Configuration File   C:\Program Files\PHP\5.2\php.ini

Após ativar uma extensão, salve o arquivo php.ini, reinicie o servidor web e verifique o phpinfo() novamente. A nova extensão deve aparecer em uma seção própria.

Resolvendo problemas

Se uma extensão não aparecer no phpinfo() você deve checar seus logs para ver qual problema ocorre.

Se está usando o PHP da linha de comando (CLI), erros de carregamento de extensãopodem ser lidos diretamente na tela.

Se estiver utilizando o PHP através de um servidor web, a localização e formato dos logs irão variar dependendo desse software. Veja a documentação do servidor web para localizar os logs, pois isso não tem a ver com o PHP em si.

Problemas comuns são o caminho do arquivo DLL, o valor da configuração " extension_dir" dentro do php.ini e diferenças de configurações de compilação.

Se o problema for em diferenças de configurações de compilação, você provavelmente não baixou a DLL correta. Tente baixar novamente a extensão com as configurações corretas. Novamente o phpinfo() é de grande ajuda.

add a note add a note

User Contributed Notes 3 notes

up
2
Robert Dinion
5 years ago
For Windows try setting the  extension_dir set to a complete path if you have an error.
Only having
extension_dir ="ext"
did not work for me.
The Apache error log showed it looking for ext\\<extension.dll> and unable to find it.
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "C:\php\ext"
up
0
peteb at airpost dot net
3 years ago
This is not really true all the time:

"However, some web servers are confusing because they do not use the php.ini located alongside your PHP executable. To find out where your actual php.ini resides, look for its path in phpinfo():

Configuration File (php.ini) Path  C:\WINDOWS"

Ignore the path being C:\windows
This issue goes back over a decade. 
Php is hardwired to display "C:\windows" even though there is not any php.ini at that location. 
Moving php.ini to C:\windows will accomplish nothing. 
I have seen many posts about folks complaining that they can't get it to stop displaying "Path C:\windows".  I have not seen anything posted that fixes this and a few posts that claim it is hardwired to display this. 
I have both working and broken php setups on various windows machines and they all say this same "c:\windows" even though my php.ini file is in c:\php. 
I know apache is using the file c:\php\php.ini and not the windows directory because there is no php.ini in windows directory and changes to my php.ini file work fine even though the info from phpinfo is wrong on this line.
up
0
Chris
5 years ago
In xampp. After removing the semicolon from the php.ini file, I had to stop the the apache server from the xampp GUI and restart it. Then I used the following code to view all the loaded extentions and my extension was shown there as well.

print_r(get_loaded_extensions());

Hope this helps!
To Top