如何查找php内核源码?centos系统如何编译php内核?
发布于 作者:苏南大叔 来源:程序如此灵动~本文说一下php
内核编译,在以前的文章里面,大多数说的是php
扩展编译,偶尔也涉及到了php
自身的内核编译。其实,在windows
或者mac
系统下,对php
内核编译的话,会比较复杂。因为要下载体积非常大的编译器。但是,这个过程,在centos
系统中确是比较简单的。由于苏南大叔的特殊代码目的,本文中会对一个古老版本的php
内核进行编译。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文中主要对一个古老版本的php
源码进行了编译。测试环境:centos@7.7
,php@5.5.38
。
如果官网上有对应源码的话,推荐官网下载。如果没有,再到github
上面翻翻看。因为两者很可能不一致(虽然版本号看起来是一样的)。
下载php
源码
以前的时候,php
内核源码都在php.net
网站上放着,但是,老版本的内核源码是找不到了。所以,这个时候,github
的版本管理功能就发挥了重要作用。苏南大叔在php
的代码库里面,找到了目标老版本的php
内核源码。
- https://github.com/php/php-src/tree/PHP-5.5.38
- https://github.com/php/php-src/archive/refs/heads/PHP-5.5.38.zip
左侧下拉框切换分支,然后右侧下载压缩包即可。
本文中,您可能需要安装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
如果出现bison
不兼容的类似提示,可以参考下面的文章链接:
执行make
编译
最后一步,编译。
make -j8
命令make -jN
,N
表示CPU
核心数量,设置了这个参数后就可以使用多个CPU进行并行编译,这可以提高编译效率。
安装这一步,如果是第一次执行,可能会耗费比较长的时间,还可能会出现目录不能写入的情况。注意--prefix
对应的目录/home/php/
也需要赋予写入权限。请自行创建目录,并赋予写入权限。
make install
测试效果
在当前文件夹bin/
下面,执行php
,并没有执行当前编译好的这个版本,而是调用了系统里面的php
。
即使在当前的php
可执行文件的目录下面,下面的两条命令是有区别的。直接php
的话,可能匹配到系统路径下的php
,导致cd
效果完全失效。
cd /home/php/bin/
php
cd /home/php/bin/
./php
苏南大叔的目标就是生成php
可执行文件,并不需要放置到系统目录下面。所以,到这里就可以了。
如果对效果不满意,然后修改了源码,再次编译的话,一定记得clean
一下。
make clean
参考文献
总结
处于测试目的的话,显然centos
下面的编译安装过程,更加容易。更多php
源码编译的经验,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。