Antes de começar, vale a pena responder a pergunta: "Por que é tão difícil compilar no Windows?" Duas razões principais:
Windows não disfruta (ainda) de uma grande comunidade de desenvolvedores que estão dispostos de compartilhar livremente os seus fontes. Como resultado direto disso, o investimento necessário em infra-estrutura requerida para suportar tal desenvolvimento não foi feito. A maioria do que está disponível foi possível pela alteração das ferramentas necessárias do Unix. Não se surpreenda se algo dessa herança se mostre de tempo em tempo.
Quase todas as instruções a seguir são do tipo "configurar e esquecer". Então se acomode e tente seguir as instruções abaixo o quão fielmente você conseguir.
Para compilar e montar o PHP, você precisa de um Microsoft Development Environment. Microsoft Visual C++ 6.0 é recomendado. Para extrair os arquivos baixados, você precisa de uma ferramenta de extração (ex.: Winzip). Se você não tiver uma ferramente unzip, você pode pegar uma versão grátis de InfoZip.
Antes de você começar, você tem que baixar...
.. win32 buildtoolsdo site do PHP em http://www.php.net/extra/win32build.zip.
..o código-fonte para o DNS name resolver usado pelo PHP em http://www.php.net/extra/bindlib_w32.zip. Esse é um substituto para a biblioteca resolv.lib inclusa no arquivo win32build.zip.
Se você planeja compilar o PHP como um módulo do Apache você também precisará dos fontes do Apache.
Finalmente, você precisará dos fontes do PHP. Você pode pegar a verão mais recente de desenvolvimento usando login anônimo ao CVS, um snapshot ou o release mais novo dos fontes.
Depois de baixar os pacotes necessários, você tem que extrair eles em um lugar apropriado.
Crie um diretório de trabalho onde todos os arquivos serão extraídos, ex.: C:\work.
Crie o diretório win32build nesse diretório de trabalho (C:\work) e descompate o arquivo win32build.zip nele.
Crie o diretório bindlib_w32 nesse diretório de trabalho (C:\work) e descompate o arquivo bindlib_w32.zip nele.
Extraia o código fonte do PHP no diretório de trabalho (C:\work).
+--c:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-4.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib |
Nota: Usuários do Cygwin podem pular o passo anterior. Um ambiente Cygwin devidamente instalado provê os arquivos bison.simple e bison.exe.
O próximo passo é configura o MVC ++ para prepará-lo para compilar. Rode o Microsoft Visual C++, e do menu selecione Tools => Options. No diálogo que aparecerá, selecione o tab de diretórios. Depois, mude o dropdown para arquivos Executables, Includes, e Library. Suas configurações devem parecer com isso:
Executable files: c:\work\win32build\bin, Cygwin users: cygwin\bin
Include files: c:\work\win32build\include
Library files: c:\work\win32build\lib
Você deve montar a biblioteca resolv.lib. Decida se você quer ter símbolos de depuração disponíveis (bindlib - Win32 Debug) ou não (bindlib - Win32 Release). Monte a configuração apropriada:
Para usuários de GUI, rode o VC++, e selecione File => Open Workspace, vá até c:\work\bindlib_w32 e selecione bindlib.dsw. Depois selecione Build=>Set Active Configuration e selecione a configuração desejada. Finalmente, selecione Build=>Rebuild All.
Para usuários de linha de comando, assegure-se que você ou registrou as variáveis de ambiente do C++, ou executou vcvars.bat, e então execute um dos comandos a seguir:
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
A melhor maneira de começar é compilando a versão CGI.
Para usuários de GUI, execute VC++, e selecione File => Open Workspace e selecione c:\work\php-4.x.x\win32\php4ts.dsw . Depois vá em Build=>Set Active Configuration e selecione a configuração desejada, ou php4ts - Win32 Debug_TS ou php4ts - Win32 Release_TS. Finalmente, selecione Build=>Rebuild All.
Para usuários de linha de comenado, assegure-se que você ou registrou as variáveis de ambiente do C++, ou executou vcvars.bat, e então execute um dos seguintes comando no diretório c:\work\php-4.x.x\win32:
msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
Nesse ponto, você deve ter um arquivo php.exe usável ou no subdiretório c:\work\php-4.x.x.\Debug_TS ou Release_TS.
É possível fazer algumas personalizações mínimas para o processo de compilação editando o arquivo main/config.win32.h. Por exemplo, você pode muda a localização padrão do arquivo php.ini, as extensões integradas, e a localização padrão para suas extensões.
Depois, você pode querer montar a versão CLI que é feita para usar o PHP da linha de comando. Os passos são o mesmos para compilar a versão CGI, exceto que você tem que selecionar o arquivo de projeto php4ts_cli - Win32 Debug_TS ou php4ts_cli - Win32 Release_TS. Depois de uma compilação sucedida você encontrará o arquivo php.exe ou no diretório Release_TS\cli\ ou Debug_TS\cli\.
Nota: Se você quiser usar PEAR e o confortável instalador de linha de comando, CLI-SAPI é obrigatório. Para mais informações sobre PEAR e o instalador leia a documentação no website do PEAR.
Para montar o módulo SAPI (php4isapi.dll) para integrar o PHP com o Microsoft IIS, modifique o seu arquivo de configuração para php4isapi-whatever-config e construa a dll desejada.