找源码首页 - 技术文章

Windows系统VS编译PHP源码5.3

更新日期:2014-09-27 11:22:19

这里以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
如果是PHP 5.5+:
setenv /x86 /2008 /release
然后再执行如下命令
cd c:php-sdk
binphpsdk_setvars.bat
binphpsdk_buildtree.bat php53dev
7、把php源码解压到C:php-sdkphp53devvc9x86目录,最后得到的目录应该是
C:php-sdkphp53devvc9x86php-5.3.18-src
8、用deps-5.3-vc9-x86.7z加压的deps目录覆盖掉C:php-sdkphp53devvc9x86deps目录
9、执行命令生成configure.js
cd C:php-sdkphp53devvc9x86php-5.3.18-src
buildconf
10、创建最小化的编译makefile
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