经过几天的弯路,终于正常编译出PHP5.6,做个记录方便后面翻阅。

一、原料准备

1、在PHP的windows官网进行下载:http://windows.php.net/download。这里我选择的是php5.6.25。

2、下载VC++ compilers。目前官网不同PHP版本需要不同的VC++版本编译器:,详情查看https://wiki.php.net/internals/windows/compiler

官网上PHP5.5,5.6可以使用Express版本:Visual Studio 2012 Express for Windows Desktop


                                                下面是php官网编译支持的VC版本

Product Name5.2.x5.3.x5.4.x5.5.x5.6.x7.0.x64bits (***)
Visual C++ 6 (SP6 only)YesYesNoNoNoNoNo
Visual C++ 7/7.1 (2002, 2003, 2003+sp1)Yes (**)Yes (**)NoNoNoNoNo
Visual C++ 8 (2005)Yes (**)NoNoNoNoNoNo
Visual C++ 9 (2008 SP1 only)Yes (**)YesYesYes (**)NoNoNo
Visual C++ 11 (2012)NoNoYes (**)YesYesYes (**)Yes
Visual C++ 14 (2015)NoNoNoNoNoYesYes 


3、需要下载PHP的SDK包及deps包


在网址:http://windows.php.net/downloads/php-sdk/可以查看到最新支持的包

目前我使用的32位,因此使用x86.


deps:http://windows.php.net/downloads/php-sdk/deps-5.6-vc11-x86.7z


sdk(有最新则选择最新):http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip


二、安装步骤

1、先将visual stdio安装好。

2、将sdk,deps,src三个包放到指定目录,如D:/php_compiler

3、先将sdk包解压,生成三个目录,分别为bin,script,share

4、从开始菜单Mircrosoft Visual Stdio 2012/Visual Studio 2012找到VS 2012 X86本机命令提示,进入到提示符

5、通过命令提示符,回到D:/php_compiler.

6、运行bin\phpsdk_setvars.bat,该bat文件为了将当前目录(D:/php_compiler/bin)添加到默认路径(系统path),目的使该bin目录下的命令可以在命令提示符中使用。

7、运行bin\phpsdk_buildtree.bat php_dev,生成php_dev目录,可以展开看到该命令预先生成一些必须的目录结构。如vc6,vc8,vc9。但是没有vc11,我们直接复制vc9成为vc11,或者直接改名为vc11

8、将php-5.6-src.zip包放到vc11/x86/,并解压出来,然后将deps.zip解压后与vc11/x86/deps进行合并。

9、通过刚才的命令提示符,进入到vc11/x86/php-5.6-src目录

10、通过buildconfig 及configure.bat —disable-all —enable-cli(参数配置通过configure.bat —help查看,根据自己需要来)生成Makefile文件。

11、运行nmake,生成了PHP.EXE

12、进行打包,nmake snap.生成php-5.6-devel-vc11.zip。

13、done


三、遇到的坑

1、总是提示系统找不到指定路径出现fatal error U1077:”if”:返回代码“0x01"

解决:通过administrator用户进行编译

2、nmake找不到

解决:将Microsoft visual stdio 11.0\vc\bin及Microsoft visual\commond7\IDE\这两个目录添加到系统变量(path)中