網路上有很多的php原始碼編譯介紹,但幾乎沒有xdebug 的源碼編譯的介紹,我在這裡結合自己的實際操作來談一下,其中也會涉及到apache源代碼的編譯。
1. php編譯
我們以vs2008作為編譯工具;其他還需要php的編譯套件,這個可在php官方網下載http://windows.php.net/downloads/php-sdk/,下載這個吧:
php-sdk-binary-tools-20110915.zip
假設把它釋放到e:php-sdk目錄下
從開始選單進入command-line模式:
先把環境配置在命名模式下進入2008的安轉路徑,假設在c:program filesmicorosft visual studio v9.0; 則再次進入該目錄下的vc子目錄:
cd vc
c:program filesmicorosft visual stuvcdio vual時執行vcvarsall.bat
c:program filesmicorosft visual studio v9.0vcvcvarsall.bat
這樣2008的執行環境就建立好了。
下一步就是進入到php-sdk目錄下,
e:php-sdk
執行
binphpsdk_setvars.bat
接下來執行:
bini*sd一子目錄phpdev,我們把下載回來的php原始碼放入到其子目錄vc9/x86下面,以5.4.73為例子,這樣就會目錄就會是這樣:
e:php-sdkphpdevvc9/x86/ php-5.4.37
進入到php-5.4.37目錄,執行
buildconf
這時會產生configure.bat和configure.js 檔案
再次執行:
configuredisable-alls --able -cli
這時候就會產生makefile 文件,我們就可以用這個文件進行編譯
直接執行nmake就可以了。
這時候只會產生命令列的php執行檔,如果想要架設web,那就需要一個cgi的php執行檔,可在configure 後面加上--enable-cgi,如下:
configure --disable- all --enable-cli --enable-cgi
有時候我們要需要產生apache能用的module ,就還要加上apache的參數(這裡以apache 2.2為例子):
configure --disable-all --enable-cli --enable-cgi --enable-apache2-2handler
但請注意,這時候需要apache 的sdk(h檔案和lib檔),官方已提供了2008的對應sdk包,它包含在deps檔案裡面,可在官方下載deps-5.4-vc9-x86檔案。
下載後把它釋放在deps目錄下就可以了。
後註:這個方法也適合vc6來編譯5.3版的php,只是這時候要先安裝2003sdk, 出錯時要手動去更改一下檔案(ext/standard/broscap.c檔案有幾處錯誤);
另外官方不再提供vc6的依賴包,例如編譯apache 的module就過不了,這時只有自己在去編譯apache,把sdk提取出來。
2. xdebug 編譯
前期準備:
需要2003sdk或 6.1 sdk,假設安裝的2003sdk,現通過菜單進入在xp的編譯環境,再用上面的方法把vs2003sdk,現通過菜單進入在xp的編譯環境,再用上面的方法把vs2008環境進來加。
要編譯xdebug,需要用到php的sdk, 這個可以從php 的源代碼中產生,只要在上面的環境中再次執行:
nmake install
預設情況下會在c盤產生php目錄,下面包含一個sdk子目錄,在這個目錄中,我們將看到有一個phpize.bat檔。
把xdebug源代碼釋放到前面的x86目錄下,假設為2.2.7版,這樣目錄就為xdebug-2.2.7
進入到這個目錄,執行phpize,一般帶全路徑執行:
c: phpsdkphpize
這樣會產生3個文件:configure.bat,configure.js,confi.nice.bat
再次執行
configure --with-xdebug
產生makefile
最後執行就這樣執行就這樣在
release_ts目錄下產生了php_xdebug.dll
後註:2.2.7版的xdebug之能在php 5.4.37下編譯成功,但不能在5.3.x 下編譯成功。另外2.1.x的xdebug也不能在php 5.4.37 下正常編譯。
3.apache 編譯
vc6,2003sdk 可以編譯2.2.22版apache,但前提條件是要下載:
apr-1.5.1-win32-src.zip,arp-iconv-12.1-win333 src-r2.zip,apr-util-1.5.4-win32-src.zip
解壓縮它們並把它們放入原始碼srclib目錄下,如果有的就替換掉。
透過2003 sdk 的選單項目進入xp,32位元環境;
進入到原始程式碼目錄,執行:
nmake /f makefile.win
而後執行:
nm /fake時期:apache
這時會抱錯,缺少awk執行文件,但是你發現c:apache目錄下已經有東西了
把裡面的include 路徑和lib路徑拷貝到php 的deps 相對應路徑下,
depsincludeapache2_2udeclude (包含h檔)
depslibapache2_2 (包含lib檔案)
這時執行:
configure --disable-all --enable-apache2_2handlerhandleryal
configure . 以上就介紹了windows 上 怎麼編譯 php 和 xdebug的 原始碼,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。