Windows下使用VS2010編譯PHP5.4和YAF

須要研究Laruence維護的YAF,並且得在Windows下學習使用。php5.4的改進和新特性吸引我在未來來臨的項目中使用它,如今php5.4.1已經RC了,修正了大量bug,正式版很快就會發布了。估計在項目正式使用時,更穩定可靠的php5.4.2也已經出來了。下面的編譯過程,是針對php5.4分支的。下面的過程,參考官方提供的編譯步驟php

編譯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的編譯了。從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。

相關文章
相關標籤/搜索