经过几天的弯路,终于正常编译出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 Name | 5.2.x | 5.3.x | 5.4.x | 5.5.x | 5.6.x | 7.0.x | 64bits (***) |
---|
Visual C++ 6 (SP6 only) | Yes | Yes | No | No | No | No | No |
Visual C++ 7/7.1 (2002, 2003, 2003+sp1) | Yes (**) | Yes (**) | No | No | No | No | No |
Visual C++ 8 (2005) | Yes (**) | No | No | No | No | No | No |
Visual C++ 9 (2008 SP1 only) | Yes (**) | Yes | Yes | Yes (**) | No | No | No |
Visual C++ 11 (2012) | No | No | Yes (**) | Yes | Yes | Yes (**) | Yes |
Visual C++ 14 (2015) | No | No | No | No | No | Yes | Yes |
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)中