windows 下编译PHP (5.4为例)
2017-12-1 0phpcom 学习笔记
花了 2 天时间研究这个今天终于成功写个文章记录下
遇到的问题:
1.buildconfig 以后 运行configure 出现很多报错
原因:由于电脑装了2013 偷懒没装2008 用的2013版本的VS导致编译出的configure.js 各种报错不能用
2.nmake 编译提示 zlib.h无法打开
原因&&解决方法:网上下载 PHPSKD包即可 deps-5.4-vc9-x86_2015-05
下载地址:deps-5.4-vc9-x86_2015-05.7z
主要是这2个
前期工具准备
php编译需要用到的工具如 BISO php-sdk-binary-tools-20110915.zip
php5.4的SDK包 deps-5.4-vc9-x86_2015-05.7z
php5.4源码包 php-5.4.4-src.zip
vs2008:http://download.microsoft.com/download/e/7/7/e777851c-c1a4-4979-86b3-6886953b32e9/VS2008ProEdition90DayTrialCHSX1435983.iso
vs2008 SP1补丁包:http://download.microsoft.com/download/1/9/d/19d22169-a4b2-455f-8c28-ed137bd91487/VS2008SP1CHSX1512981.iso
VS的破解方法自行百度 很简单的
step1:
打开VS2008的命令行 如图所示 用 这个主要是省去了配置VS的环境变量的动作 懒嘛
step2:
解压之前下载的 php-sdk-binary
执行以下命令 第二个命令会生成几个目录
-
bin\phpsdk_setvars.bat
-
bin\phpsdk_buildtree.bat phpdev
接下来,将PHP源码解压到php-sdk\phpdev\vc[x]\x[x]\<php-source-directory>目录
然后解压 deps-5.4-vc9-x86_2015-05 中的几个目录放入php源码同级目录下,切记是deps 下级的目录拖入php源码中 而不是吧deps这个目录脱进去,这样是不会生效的
执行configure --disable-calendar ,配置编译php
执行nmake,完成编译
执行“nmake snap”
编译完成
PS:编译遇到的错误
1)calendar扩展编译错误,禁止掉即可--disable-calendar
-
ext\calendar\jewish.c(325) : error C2001: newline in constant
-
ext\calendar\jewish.c(326) : error C2001: newline in constant
-
ext\calendar\jewish.c(327) : error C2001: newline in constant
-
ext\calendar\jewish.c(328) : error C2001: newline in constant
-
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
-
VC\Bin\cl.exe"' : return code '0x2'
-
Stop.
2)连接错误,需要安装vs2008 SP1,下载地址(http://download.microsoft.com/download/1/9/d/19d22169-a4b2-455f-8c28-ed137bd91487/VS2008SP1CHSX1512981.iso)
-
fatal error C1900: Il mismatch between 'P1' version '20080116' and 'P2' version
-
'20070207'
-
LINK : fatal error LNK1257: code generation failed
-
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
-
VC\Bin\cl.exe"' : return code '0x2'
-
Stop.
PS:推荐的PHP常用配置
-
configure --enable-apache2-4handler --enable-apache2-2handler --disable-cgi --disable-calendar --enable-pdo --with-pdo-sqlite=shared --enable-mbstring=shared --enable-mbregex