找源码首页 - 技术文章

Windows下使用VS2010编译PHP5.4的方法

更新日期:2014-09-27 11:00:44

编译PHP

首先下载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


如果想了解更多,可以浏览: https://wiki.php.net/internals/windows/stepbystepbuild  查看官方编译方法.