需要研究Laruence维护的YAF,而且得在Windows下学习使用。php5.4的改进和新特性吸引我在将来来临的项目中使用它,现在php5.4.1已经RC了,修正了大量bug,正式版很快就会发布了。估计在项目正式使用时,更稳定可靠的php5.4.2也已经出来了。下面的编译过程,是针对php5.4分支的。下面的过程,参考官方提供的编译步骤。
首先下载php-sdk,先下载较新的php-sdk-binary-tools-20110915.zip,解压到
f:\php-sdk
目录下。注意,解压后,这个目录下应该有bin和script子目录。
开一个cmd窗口,切换到f:\php-sdk目录下,运行vcvarsall.bat来设置好编译环境变量。
d:\develop\MVS10\vc\vcvarsall.bat
这里vcvarsall.bat的具体目录要根据你自己的安装位置而定。
接着,进入在cmd窗口里继续运行以下命令:
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat php54dev
这样,在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。