If you are looking for missed links for
win32build
or
bindlib_w32
you can find them in CVS address
http://viewcvs.php.net/viewvc.cgi/phpweb/extra
and then try to view the dead files,or try it directly by using this URL
http://viewcvs.php.net/viewvc.cgi/phpweb/extra/?hideattic=0
regard
Mohsen hosseini
Compilando a partir dos fontes
Esse capítulo ensina como compilar PHP a partir dos fontes no Windows, usando as ferramentas da Microsoft. Para compilar o PHP com cygwin, veja o Instalação em sistemas Unix.
Quick Guide to Building On Windows
Este rápido guia passo-a-passo foi escrito em Março de 2008, executado no Windows XP Service Pack 2 com todos as últimas atualizações e compilando o PHP versões 5.2.5 e 5.3. Sua experiência pode ser diferente se utilizar outras ferramentas
-
Baixar e instalar:
- Copie C:\Arquivos de Programas\Microsoft SDKs\Windows\v6.1\Include\WinResrc.h para C:\Arquivos de Programas\Microsoft SDKs\Windows\v6.1\Include\winres.h.
- Crie o diretório C:\work.
- Baixe » as ferramentas de compilação do Windows e descompacte o conteúdo em C:\work.
- Crie o diretório C:\usr\local\lib. Copie C:\work\win32build\bin\bison.simple para o novo diretório.
- Baixe » a biblioteca de resolução de DNS do Windows e descompacte o conteúdo em C:\work.
- Abra o arquivo C:\work\bindlib_w32\bindlib.dsw. Se e quando perguntao se deseja atualizar o projeto, escolha Sim (Yes). Escolha a configuração Release ou Debug na barra superior, então escolha Compilar (Build) => Compilar Solução (Build Solution).
-
Obtenha uma cópia dos fontes do PHP e extraia para o diretório
C:\work. A essa altura, o diretório deverá estar
parecido com isso:
+-C:\work | +-bindlib_w32 | | +-Debug | | | +-resolv.lib | | | +-... | | +-... | +-win32build | | +-bin | | +-include | | +-lib | +-php-5.2.5 | | +-build | | +-win32 | | +-...
- Abra um shell utilizando o atalho no menu iniciar para o Visual Studio 2008 Command Prompt.
-
Execute o comando:
C:\Arquivos de Programas\Microsoft Visual Studio 9.0\VC> set "PATH=C:\work\win32build\bin;%PATH%" C:\Arquivos de Programas\Microsoft Visual Studio 9.0\VC>
- Entre no diretório C:\work\php-5.2.5.
- Execute cscript /nologo win32\build\buildconf.js.
- Execute cscript /nologo configure.js --disable-all --enable-cli --enable-cgi --enable-object-out-dir=.. --disable-ipv6. Para habilitar depuração (debug), adicione --enable-debug no final do comando.
- Execute nmake.
- Se tudo ocorreu bem, deverá existir um executável CLI do PHP em C:\work\Debug_TS\php.exe, ou C:\work\Release_TS\php.exe.
Ambiente de compilação
Para compilar e montar o PHP, você precisa de um Microsoft Development Environment. Os seguintes ambientes são suportados:
- Microsoft Visual C++ 6.0 (official)
- Microsoft Visual C++ .NET
- Microsoft Visual C++ 2005, Windows Platform SDK e .NET Framework SDK (atual)
Embora VC6 (Microsoft Visual C++ 6.0) seja usado para executar oficiais compilações do Windows, ele não pode ser obtido do site da Microsoft. Novos usuários procurando compilar o PHP precisa usar Microsoft Visual C++ 2005 Express Edition e seus componentes auxiliares.
Configurando o Microsoft Visual C++ 2005 Express
Nota: Combinado, estes componentes são muito extenso e requisitará um gigabyte de espaço de disco.
Configurando o Microsoft Visual C++ 2005 Express é melhor contido, e requer a instalação de três pacotes separados e várias mudanças de compatibilidades. Mantenha uma lista de caminhos no qual estes programas estão sendo instalados. Faça download e instale os seguintes programas:
- » Microsoft Visual C++ 2005 Express
- » Microsoft Windows Server 2005 Platform SDK
- » .NET Framework 2.0 Software Development Kit
Há vários passos pós-instalação:
- » MSVC 2005 Express precisa ser configurado para usar Windows Platform SDK. Ele não é necessário para executar o segundo passo, como PHP não usa interface gráfica de usuário.
- Windows Platform SDK contém um arquivo chamado WinResrc.h normalmente na pasta Include dentro do diretório de instalação do SDK. Este necessita ser copiado e renomeado para winres.h, o nome que o PHP usa para o arquivo.
Finalmente, quando usando MSVC 2005 Express na linha de comando, várias variáveis de ambiente precisam ser definidas. vsvars32.bat normalmente encontradas em C:\Program Files\Microsoft Visual Studio 8\Common7\Tools (pesquise pelo arquivo caso contrário) contém estas declarações. As variáveis de ambiente PATH, INCLUDE e LIB precisam corresponder aos diretórios bin, include e lib dos dois recentes instalados SDK adicionado para eles.
Nota: O caminho do .NET SDK pode já estar presente no arquivo vsvars32.bat, como esta instalação do próprio SDK no mesmo diretório que o Microsoft Visual C++ 2005 Express.
Bibliotecas
Para extrair os arquivos baixados, você precisará de uma ferramenta que descompacte arquivos ZIP. O Windows XP e os mais novos já incluem essa funcionalidade embutida.
Antes de você começar, você tem que baixar:
- win32 buildtools do 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.
Juntanto tudo
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).
- Compile as biblioteca que você precisará (ou baixe os binários se estiverem disponíveis) e coloque os cabeçalhos e bibliotecas no diretório C:\work\win32build\include e C:\work\win32build\lib, respectivamente.
- Se você não tem o cygwin instalado com o bison e flex, você precisará também fazer o diretório C:\work\win32build\bin disponível no PATH, assim estas ferramentas podem ser encontradas pelo script configure.
Seguindo esses passos a sua estrutura de diretório parecerá com isso:
+--C:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-5.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib
Se você não estiver usando o » Cygwin, você também deve criar os diretórios C:\usr\local\lib e então copie o arquivo bison.simple de C:\work\win32build\bin para C:\usr\local\lib.
Nota: Se você quiser usar o PEAR e o conviniente instalador em linha de comando, o CLI-SAPI é necessário. Para mais informação sobre PEAR e o instalador leia a documentação no web site do » PEAR.
Compilando resolv.lib
Você deve compilar 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), mas por favor, lembre-se da escolha que você fará, por que a biblioteca com os símbolos só montará com o PHP se o mesmo for montado em modo de depuração. Monte a configuração apropriada:
- Para usuários de GUI, execute VC++, clicando duas-vezes em C:\work\bindlib_w32\bindlib.dsw. Então selecione Build=>Rebuild All.
-
Para usuários de linha de comando, assegure-se que as variáveis de ambiente
do C++ estão registradas, ou execute
vcvars.bat, e então execute um dos seguintes
comandos:
- msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
- msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
Nesse ponto, você deve ter uma resolv.lib utilizável ou nos sub-diretórios C:\work\bindlib_w32\Debug ou Release. Copie esse arquivo para o diretório C:\work\win32build\lib, sobrescrevendo o arquivo de mesmo nome nesse diretório.
Montando o PHP usando no novo sistema de montagem [Apenas PHP >=5]
Esse capítulo explica como compilar o PHP >=5 usando o novo sistema de montagem, que é baseado em CLI e muito similar com o sistema de montagem principal do PHP no Unix.
Nota: Esse sistema de montagem não está disponível no PHP 4. Favor, ler Compilando a partir dos fontes se for o seu caso.
Antes de começar, assegure-se de let Compilando a partir dos fontes e que você compilou todas as bibliotecas necessárias, como » Libxml ou » ICU (necessária para o PHP >= 6).
Primeiro, você deve abrir um Prompt de Comando do Visual Strudio, que pode estar disponível no Menu Iniciar (Start Menu). Um Prompt de Comando comum não deve funcionar, uma vez que provavelmente as variáveis de ambiente necessárias não estão configuradas. Então digite algo como cd C:\work\php-5.x.x para entrar no diretório dos fontes do PHP. Agora se prepare para começar a configurar o PHP.
O segundo passo é executar o arquivo de lote buildconf para criar o script configure, procurando o diretório por arquivos config.w32. Via de regra, esse comando também procurará nos seguintes diretórios: pecl; ..\pecl; pecl\rpc; ..\pecl\rpc. A partir do PHP 5.1.0, vodê pode alterar esse comportamento usando o argumento --add-modules-dir (ex.: cscript /nologo win32/build/buildconf.js --add-modules-dir=../php-gtk2 --add-modules-dir=../pecl).
O terceiro passo é configurar. Para ver a lista de opções de configuração disponíveis, digite cscript /nologo configure.js --help. Depois de escolher as opções que você irá habilitar/desabilitar, digite algo como cscript /nologo configure.js --disable-foo --enable-fun-ext. Usar --enable-foo=shared tentará construir a extensão 'foo' como um módulo compartilhado, carregado dinâmicamente.
O último passo é compilar. Para isso, basta executar o comandocommand nmake. Os arquivos gerados (e.g. .exe e .dll) serão colocado ou nos diretórios Release_TS our Debug_TS (se compilado com Thread safety), ou no diretórios Release ou Debug caso contrário.
É opcional, mas você também pode executar os aplicativos de teste do PHP, executando nmake test. Se você quiser rodar apenas um teste específico, você pode user a variável 'TESTS' (ex.: nmake /D TESTS=ext/sqlite/tests test - só executará testes no sqlite). Para apagar esses arquivos que foram criados durante a compilação, você pode usar o comando nmake clean.
Uma opção de configuração muito útil para montar snapshots é --enable-snapshot-build, que adiciona un novo modo de compilação (nmake build-snap). Isso tenta montar cada extensão disponível (como compartilhada, por padrão), mas ignorará erros de montagem em extensões individuais ou SAPI.
Building PHP using DSW files [PHP 4]
Compilar o PHP usando os arquivos DSW não é suportado a partir do PHP5, já que um sistema mais flexível está disponível. De qualquer forma, você ainda pode usá-los, mas tenha em mente que ele não são testados freqüentemente, então você pode ter problemas de compilação. Para compilar o PHP 4 para Windows, no entanto, essa é a única opção disponível.
Configure MVC ++
O próximo passo é configurar 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:
- Arquivos executáveis: C:\work\win32build\bin, Usuários do Cygwin: C:\cygwin\bin
- Arquivos inclusos: C:\work\win32build\include
- Arquivos de Bibliotecas: C:\work\win32build\lib
Compilando
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 em 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\.
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.
Compilando a partir dos fontes
18-Sep-2008 04:05
03-Sep-2008 08:38
The links to download the Windows Build tools ZIP file and the DNS Name Resolver do not work on this page. They take me to a page alerting me that these names are not recognized functions... "but here are 20 functions that are close in spelling."
Seeing as we have to compile the build before I can use MySQL, and we have to have these tools to compile, can you fix this, please? Or is there another place for me to download these items, directly?
Both links appear twice on the page, and all four are incorrect.
20-Jun-2008 02:33
If you are looking for the missing libxml includes and libs you can get them from:
http://www.zlatkovic.com/pub/libxml/
libxml also requires the iconv lib/includes. So download the following two packages:
iconv-1.x.x.win32.zip
libxml2-2.x.x+.win32.zip
Then add the include and lib directories to the command line:
cscript /nologo configure.js
--with-extra-includes=
C:\work\libxml2-2.6.32+.win32\include;
C:\work\iconv-1.9.2.win32\include
--with-extra-libs=
C:\work\libxml2-2.6.32+.win32\lib;
C:\work\iconv-1.9.2.win32\lib
Furthermore the compiler was complaining about a missing IPv6 struct so I had to disable IPv6:
--disable-ipv6
Regards,
Mat
SmartFTP
06-Dec-2007 04:14
If you are getting the following error message:
Input Error: There is no script engine for file extension ".js"
with Visual Studio 2005 Command Prompt or similar, try to add "/e:jscript" to the command line.
Something like:
cscript /nologo /e:jscript win32/build/buildconf.js
It worked for me, I hope it helps.
27-Jun-2007 06:43
A detailed tutorial for building php 5 using VC++ 2005 express edition (ie. the free version) is available here: http://elizabethmariesmith.com/2006/11/15/
It can be a huge time saver if you do not have a complete VC6 toolchain already setup
27-May-2007 06:13
>>Compiling using Visual Studio .NET will create binaries dependent of msvcp71.dll
>
> Only if you compile with the wrong runtime library.
if this is so easy, please tell us how you managed to *not* create dependencies on msvcp71.dll/msvcr80/... using Visual C++ .NET 2000/2003/2005. thanks!
>> Compiling using Visual Studio .NET will create binaries dependent of msvcp71.dll
Only if you compile with the wrong runtime library.
12-May-2006 07:12
When running "cscript /nologo configure.js" 5.x on Windows
2000 or XP, if you get the following error:
Microsoft JScript runtime error: Object doesn't support this
property or method
You need to have at least version 5.6 of WSH.
This is necessary because configure.js will use the .Exec()
method of the WScript.Shell.
This evidently didn't exist until 5.6?
You can download WSH 5.6 here:
http://www.microsoft.com/downloads/details.aspx?
FamilyID=c717d943-7e4b-4622-86eb-95a22b832caa&DisplayLang=en
03-Apr-2006 12:16
Don't forget to setup Environment variable:
BISON_SIMPLE="C:\\work\\win32build\\bin\\bison.simple"
or this can cause error:
c:/usr/local/lib/bison.simple: No such file or directory
Alexey Furmanov.
Compiling using Visual Studio .NET will create binaries dependent of msvcp71.dll which has three repercussions:
1. This dll will need to be distributed.
2. The binaries are not currently compatible with the Zend optimiser (not sure why it should make a difference but it does).
3. Binaries are larger!
