須要研究Laruence維護的YAF,並且得在Windows下學習使用。php5.4的改進和新特性吸引我在未來來臨的項目中使用它,如今php5.4.1已經RC了,修正了大量bug,正式版很快就會發布了。估計在項目正式使用時,更穩定可靠的php5.4.2也已經出來了。下面的編譯過程,是針對php5.4分支的。下面的過程,參考官方提供的編譯步驟。php
首先下載php-sdk,先下載較新的php-sdk-binary-tools-20110915.zip,解壓到mysql
f:\php-sdkgit
目錄下。注意,解壓後,這個目錄下應該有bin和script子目錄。github
開一個cmd窗口,切換到f:\php-sdk目錄下,運行vcvarsall.bat來設置好編譯環境變量。sql
d:\develop\MVS10\vc\vcvarsall.batwindows
這裏vcvarsall.bat的具體目錄要根據你本身的安裝位置而定。服務器
接着,進入在cmd窗口裏繼續運行如下命令:session
bin\phpsdk_setvars.batcurl
bin\phpsdk_buildtree.bat php54devsvn
這樣,在f:\php-sdk目錄下又多了一個php54dev目錄。
接着繼續在php-sdk目錄下載deps-5.4-vc9-x86.7z,並解壓到
f:\php-sdk\php54dev\vc9\x86\
目錄下。原來這個目錄下的deps目錄下的全部子目錄均是空目錄,解壓後,應該複製進不少必要的模塊/擴展所需的庫文件。
接着獲取php5.4分支下的最新代碼,
cd f:\
git clone https://github.com/php/php-src.git
cd php-src
git checkout PHP-5.4
將PHP-5.4目錄複製一份到
f:\php-sdk\php54dev\vc9\x86\
目錄下。進入php源碼目錄
cd f:\php-sdk\php54dev\vc9\x86\php-5.4
運行
buildconf
而後能夠查看一下可配置的選項:
configure --help
而後就能夠先試着編譯php了。最開始,通常編譯儘量少的模塊,先讓核心能正常編譯出來:
configure --disable-all --enable-cli
而後編譯
nmake clean; nmake
稍等,php5.4最核心部分及一個命令行工具就編譯出來了。nmake clean是爲了不遺留編譯中間結果文件帶來干擾。看看都有什麼擴展模塊:
cd Release_TS
php -m
能夠看到:
[PHP Modules]
Core
date
ereg
pcre
Reflection
SPL
standard
[Zend Modules]
接下來,能夠慢慢地加上所須要的擴展模塊。注意,編譯時最好把編譯結果輸出到某個文件中,好比:
nmake >log.txt
這樣,若是編譯過程當中出了問題,能夠查看完整的編譯記錄。
咱們多加點擴展模塊看看:
configure --disable-all --enable-cli --with-tidy --with-sqlite3 --with-mcrypt=static --with-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-gd --with-mhash --with-curl --with-gettext --with-iconv --enable-mbstring --enable-session
nmake
cd Release_TS
php -m
[PHP Modules]
Core
date
ereg
gd
gettext
hash
iconv
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
pcre
Reflection
session
SPL
sqlite3
standard
tidy
[Zend Modules]
接下來,能夠根據本身的須要增長或刪除擴展模塊了。具體有哪些模塊參數可用,能夠經過
configure --help
來獲取。
若是須要把某個模塊編譯成動態加載,能夠相似這樣指定:
--with-sqlite3=shared
靜態模塊能夠相似這樣指定:
--with-mcrypt=static
如今,咱們能夠開始進行YAF的編譯了。從YAF下載,或者直接從svn服務器上同步最新的源碼:
svn checkout https://svn.php.net/repository/pecl/yaf/trunk/
把YAF的源碼放到
f:\php-sdk\php54dev\vc9\x86\pecl\yaf
其實也能夠放到
f:\php-sdk\php54dev\vc9\x86\php-5.4\ext\yaf
目錄下。固然,上面是官方推薦用法,畢竟yaf在pecl裏。
回到php源碼目錄下
cd f:\php-sdk\php54dev\vc9\x86\php-5.4
運行
buildconf
而後能夠查看一下可配置的選項:
configure --help
能夠發現,多了一個參數選項:
--enable-yaf enable yaf support
再次配置並編譯:
configure --disable-all --enable-cli --with-tidy --with-sqlite3 --with-mcrypt=static --with-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-gd --with-mhash --with-curl --with-gettext --with-iconv --enable-mbstring --enable-session --enable-yaf
nmake
注意,YAF可能對一些擴展模塊和功能有依賴,若是編譯出錯,檢查出錯信息,通常加上所缺的依賴便可。
使用 php -m 查看一下吧,就會發現YAF已經順利編譯完成。不過缺省狀況下是以靜態方式編譯的,若是想以動態方式,即獲得php_yaf.dll,能夠把上面配置參數中的
--enable-yaf
改成
--enable-yaf=shared
便可。而後再nmake clean;nmake就好了。
若是想打個包,能夠運行
nmake snap
Release_TS目錄下就會多幾個zip包,分別是咱們將須要的開發包、測試用例包和發佈包。
更新源碼後,須要從新編譯,這就只須要開一個cmd窗口,進入php源碼目錄後,運行
d:\develop\MVS10\vc\vcvarsall.bat
f:\php-sdk\bin\phpsdk_setvars.bat
而後再用nmake編譯便可。若是參數須要調整或有新模塊加入,仍是要從新buildconf和configure。