我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文说一下php内核编译,在以前的文章里面,大多数说的是php扩展编译,偶尔也涉及到了php自身的内核编译。其实,在windows或者mac系统下,对php内核编译的话,会比较复杂。因为要下载体积非常大的编译器。但是,这个过程,在centos系统中确是比较简单的。由于苏南大叔的特殊代码目的,本文中会对一个古老版本的php内核进行编译。

苏南大叔:如何查找php内核源码?centos系统如何编译php内核? - centos编译php
如何查找php内核源码?centos系统如何编译php内核?(图5-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文中主要对一个古老版本的php源码进行了编译。测试环境:centos@7.7php@5.5.38

如果官网上有对应源码的话,推荐官网下载。如果没有,再到github上面翻翻看。因为两者很可能不一致(虽然版本号看起来是一样的)。

下载php源码

以前的时候,php内核源码都在php.net网站上放着,但是,老版本的内核源码是找不到了。所以,这个时候,github的版本管理功能就发挥了重要作用。苏南大叔在php的代码库里面,找到了目标老版本的php内核源码。

左侧下拉框切换分支,然后右侧下载压缩包即可。

苏南大叔:如何查找php内核源码?centos系统如何编译php内核? - php-branches
如何查找php内核源码?centos系统如何编译php内核?(图5-2)

本文中,您可能需要安装php-devel,如果编译过程中遇到了麻烦,可以试试这个命令:

yum install php-devel

生成./configure文件

拿到内核源码之后,首先要给内核源码目录写权限。

chmod -R 755 ./

然后执行配置命令,比如:

./buildconf

第二次构建的话,需要使用--force参数,更加稳妥。

./buildconf --force

执行./configure

通用命令如下:

./configure --prefix=/home/php

--prefix,这个参数主要用于决定这个php编译完成后,放置在什么地方。因为苏南大叔只是临时编译的文件,并不是用于生产环境。所以,配置的路径/home/php也不是系统目录,注意这个--prefix目录也需要写入权限。

其实,每个人要编译的phpsrc,由于扩展之类的不同,./configure的参数都是不一样的。实际上,应该使用--help定制属于自己的专属命令参数列表。

/configure --help

php@5.5.38编译命令范例:

./configure --prefix=/home/php --disable-cgi --disable-fpm --with-zlib -q

苏南大叔:如何查找php内核源码?centos系统如何编译php内核? - configure的参数信息
如何查找php内核源码?centos系统如何编译php内核?(图5-3)

如果出现bison不兼容的类似提示,可以参考下面的文章链接:

执行make编译

最后一步,编译。

make -j8
命令make -jNN表示CPU核心数量,设置了这个参数后就可以使用多个CPU进行并行编译,这可以提高编译效率。

安装这一步,如果是第一次执行,可能会耗费比较长的时间,还可能会出现目录不能写入的情况。注意--prefix对应的目录/home/php/也需要赋予写入权限。请自行创建目录,并赋予写入权限。

make install

苏南大叔:如何查找php内核源码?centos系统如何编译php内核? - make install
如何查找php内核源码?centos系统如何编译php内核?(图5-4)

测试效果

在当前文件夹bin/下面,执行php,并没有执行当前编译好的这个版本,而是调用了系统里面的php

苏南大叔:如何查找php内核源码?centos系统如何编译php内核? - php所在的目录
如何查找php内核源码?centos系统如何编译php内核?(图5-5)

即使在当前的php可执行文件的目录下面,下面的两条命令是有区别的。直接php的话,可能匹配到系统路径下的php,导致cd效果完全失效。

cd /home/php/bin/
php
cd /home/php/bin/
./php

苏南大叔的目标就是生成php可执行文件,并不需要放置到系统目录下面。所以,到这里就可以了。

如果对效果不满意,然后修改了源码,再次编译的话,一定记得clean一下。

make clean

参考文献

总结

处于测试目的的话,显然centos下面的编译安装过程,更加容易。更多php源码编译的经验,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    zend