这里以win7系统用vs2008编译5.3.18为例
准备文件
1、Microsoft Visual Studio 2008,VS2008SP1补丁和Microsoft Windows SDK v6.1
如果使用其它版本,可以到这里找https://wiki.php.net/internals/windows/compiler
2、deps-5.3-vc9-x86.7z和php-sdk-binary-tools-20110915.zip这两个包可以从http://windows.php.net/downloads/php-sdk/ 获得
3、php源码 从http://windows.php.net/downloads/releases/ 下载
4、cygwin 从http://www.cygwin.com/下载
操作步骤
1、安装Windows sdk 6.1(可以选择不安装文档和示例)
2、安装Visual Studio 2008(c++支持是必须的,不清楚的最好也安装,或者用推荐安装方式)
3、运行SPInstaller.exe安装VS2008SP1补丁,注意和步骤1,2的安装顺序不能错。
4、创建目录c:php-sdk
5、把php-sdk-binary-tools-20110915.zip里的文件解压到c:php-sdk里,当前目录里应该有bin,script,share三个目录
6、开始菜单打开windows sdk 6.1 shell根据php版本执行如下命令
如果是PHP 5.2, 5.3 and 5.4:
setenv /x86 /xp /release
setenv /x86 /2008 /release
cd c:php-sdk binphpsdk_setvars.bat binphpsdk_buildtree.bat php53dev
cd C:php-sdkphp53devvc9x86php-5.3.18-src buildconf
configure --disable-all --enable-cli
可以通过help命令查看支持的选项,如
configure --help
11、编译生成二进制文件,在Release_TS目录
nmake
12、打包成二进制包的结构 ,并用 zip 打包,在Release_TS/php-5.3.18-Win32-VC9-x86.zip
nmake snap
13、测试是否可以正常执行
cd Release_TS php.exe -m
14、编译一个完整的php二进制包
把C:php-sdkphp53devvc9x86depsincludelibpng目录中的文件拷贝到C:php-sdkphp53devvc9x86depsinclude中,不然会编译不到gd库
configure --enable-snapshot-build nmake nmake snap
添加pecl扩展
在C:php-sdkphp53devvc9x86目录下创建pecl目录,里面放扩展目录,以dbase为例,则是C:php-sdkphp53devvc9x86pecldbase
cd C:php-sdkphp53devvc9x86php-5.3.18-src buildconf configure --enable-cli --enable-dbase nmake nmake snap
添加自定义扩展
以smtpmail为例,需要安装cygwin全默认就行,生成扩展目录
cd ext ..Release_TSphp.exe ext_skel_win32.php --extname=smtpmail
方法1)如果使用命令行编译
修改config.w32把ARG_ENABLE前面的//去掉保存,执行命令
cd ../ buildconf
打开configure.js找到行
ARG_ENABLE("smtpmail", "enable smtpmail support", "no"); */
去掉多出来的*/最终效果为
ARG_ENABLE("smtpmail", "enable smtpmail support", "no");
执行编译命令
configure --enable-smtpmail=shared nmake nmake snap
方法2)用vc2008的IDE打开编译
如果报php5ts_debug.lib不存在就从Release_TSphp-5.3.18dev目录拷贝php5ts.lib到smtpmail目录,重命名为php5ts_debug.lib