這是一篇翻譯的文章,原文參見:https://wiki.php.net/internals/windows/stepbystepbuild
順便提一句,wiki.php.net有很多精彩的內容,想深入了解php的同學千萬不要錯過:)
在windows平台上編譯php,需要三樣准備工作:
1,合適的編譯環境,包括安裝一個編譯器、正確的SDK以及對應的binary tools
2,編譯PHP需要用到的第三庫、頭文件
3,PHP源代碼
這是在windows平台上編譯php最困難的部分,因為建立這樣的編譯環境需要大量的磁盤空間,可能會有數G
需求:
注:
最新的php5.5可以用VC++9或者VC++11編譯,不過5.5尚未正式發布。
如果使用的是VC6,則需要安裝Windows Server Feb.2003 SDK,如果使用的VC9則需安裝SDK6.1
1,安裝vs2008
2,安裝windows sdk 6.1
3,獲得php 5.3源碼,可以從此處獲取snapshot (先不要解壓)
4,創建文件夾c:\php-sdk
5,解壓binary-tools.zip 至c:\php-sdk文件夾中。binary-tools.zip可以從此處獲取(http://windows.php.net/downloads/php-sdk/)。解壓後C:\php-sdk中應該包含bin,script,share等子目錄。
6,打開windows sdk 6.1 shell,直接下述指令:
PHP 5.2, 5.3 and 5.4:
setenv /x86 /xp /release
PHP 5.5+:
setenv /x86 /2008 /release
7,
cd c:\php-sdk\
8,
bin\phpsdk_setvars.bat
9,
bin\phpsdk_buildtree.bat php53dev
10,現在解壓第3步中下載的snapshot至C:\php-sdk\php53dev\vc9\x86文件夾中。解壓完成之後,目錄路徑形如C:\php-sdk\php53dev\vc9\x86\php5.3-xyz。
11,在C:\php-sdk\php53dev\vc9\x86中,有一個deps文件夾。下載編譯所依賴的一些libraries,並且解壓至其中。這些libraries可以從http://wiki.php.net/internals/windows/libs獲得。確保解壓完成之後,deps下包含/include和/lib目錄。(注:筆者直接從http://windows.php.net/downloads/php-sdk/下載了deps-5.3-vc9-x86.7z可以順利編譯通過)
12,繼續在windows-sdk-shell中運行
cd C:\php-sdk\php53dev\vc9\x86\php5.3-xyz
13,
buildconf
14,查看編譯選項
configure --help
15,根據自己的需要輸入構建指令:
configure --disable-all --enable-cli 編譯最簡單的PHP內核並且只支持cli運行方式
(注: 一些擴展需要lib,頭文件甚至其他程序,詳見libs ,下載自己所需的版本並且解壓至deps文件夾c:\php-sdk\php53\vc9\x86\deps)
16,
nmake
17,如果你需要壓縮編譯好的php文件,繼續執行:
nmake snap
18,編譯完的PHP位於C:\php-sdk\php53dev\vc9\x86\php5.3-SNAPSHOTTIME\Release_TS目錄。
1,清除上次的編譯結果
nmake clean
2,如果你需要重新config
buildconf --force
3,輸入新的configure配置
configure --disable-all --enable-cli --enable-$remains
4,編譯
nmake
如果只編譯最精簡的PHP(僅enable-cli),編譯成功之後,可以觀察一下編譯了哪些EXT,SAPI:
除了standard(標准擴展),這個php版本只含有date,ereg,pcre,reflection,SPL幾個擴展,它們的源碼都可以在php-src/ext中找到。