windows环境,如何对php内核进行编译?编译的基本步骤
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔写的最近的一些文章,都是关于在windows环境下对php内核进行编译的。然而文章写了好多,却还没有描述phpsrc的编译过程。在本篇文章中,苏南大叔就来填这个坑,在windows环境下,对php内核编译的过程。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述,在windows环境下对php@7.4.28内核进行编译的具体过程,编译过程中,究竟会发生什么故事呢?请查看本文的内容。本文测试环境:win10,vs2017,vc141@19.11,phpsrc@7.4.28,php-sdk-binary-tools@2.2.1。
本文讲述的是在
win10环境下编译phpsrc,在centos环境下编译phpsrc的文章,请参考:
准备环境
相关代码/工具下载地址:
- https://visualstudio.microsoft.com/zh-hans/vs/
- https://github.com/php/php-sdk-binary-tools
- https://github.com/php/php-src/tree/PHP-7.4.28

这里要编译的是最新的phpsrc@7.4.28,根据官方文章提示,这个需要vs2017的vc15进行编译,所以,这里需要先准备vs2017,这个过程可以参考下面这篇文章:
然后还需要准备php-sdk-binary-tools,参考文章:
组装目录
根据官方的提示,除了要设置vc15之外,还需要建立相关的文件夹目录结构,用于存放phpsrc@7.4.28。但是,这个目录结构虽然是官方推荐的,但是不按这个走的话,也是可以的。而且苏南大叔认为:按照官方推荐走的话,编译下一个不同版本的phpsrc内核的话,deps目录是有冲突的。不知道官方是不是也是这么认为的呢?
执行命令:
phpsdk-vc15-x64.bat第一次初始化,需要执行buildtree,以后就不需要这一步,直接cd到phpsrc。
phpsdk_buildtree phpdev把phpsrc@7.4.28代码放到新生成的phpdev/vc15/x64/目录下面。路径信息如下所示:

切换到phpsrc目录下面,执行命令构建deps工具目录。也是第一次初始化时需要执行,以后不用执行。命令如下:
phpsdk_deps --update构建内核
此时的执行目录是php-src-PHP-7.4.28目录,如果有要同时编译的pecl扩展,请放到deps和php-src-PHP-7.4.28的同级目录。但是,本文中暂时不考虑这样的情况,仅仅是编译单纯的php-src-PHP-7.4.28内核。
nmake clean
buildconf.bat
configure --disable-all --enable-cli --enable-phar
nmake注意在非首次构建的时候,一定要注意nmake clean,这个道理大家都懂得。
configure参数
configure的参数,请仔细考虑。请使用--help选择你需要的参数,不同的php-src和pecl组合,会生成不同的参数组合。下面说几个可能用到的参数,默认是release+ts版本。
nts版本:
--disable-zts
debug版本:
--enable-debug
也就是说,要获得debug版本,可能需要执行的命令是:
configure --disable-all --enable-cli --enable-phar --enable-debug整理
这里获得的release目录,其实还是有些混乱的。如果你再执行install的话:
nmake install就可以在系统盘下的php目录下面,获得一个整理过的整洁版php@7。


如果使用snap命令的话,还可以获得一个超豪华打包版本的多个不同用途的php相关压缩包。(只有一个有用,其它的都没啥用,所以您自己试试吧)。
nmake snap参考文献
- https://newsn.net/say/vs2017-vc-toolset.html
- https://newsn.net/say/phpsrc-compile-centos.html
- https://newsn.net/say/centos-phpsrc.html
总结
windows版本的php内核编译比其它系统下的内核编译,要复杂的多。不但要安装vs,还要下载php-sdk-binary-tools,更要更新deps工具。这些操作在其它操作系统下,都是不存在的。