centos系统,如何编译最新版php7/php8解释器?
发布于 作者:苏南大叔 来源:程序如此灵动~
前几天的文章里面,苏南大叔编译安装了一款古老的php@5.5.38。在查找phpsrc源码的时候,发现现在的php版本都是8时代了。所以,也就顺手在centos上编译了一下php@8。其实,这个php8的编译和php@5.5的编译,没有太大的差别。所以,本文里面也就不太详细描述了。

大家好,这里是苏南大叔的“程序如此灵动”博客,主要讲述苏南大叔和计算机代码的故事。本文中讲述,centos系统下,对最新版本php解释器的的编译事项。本文中,测试环境:centos@7.7.1908,re2c@0.13.4,bison@3.0。共编译了两款php,分别是:php@7.4.28以及php@8.1.4。流程基本上一致,就是换个phpsrc文件路径的区别,同时configure的参数也可能不同。
re2c和bison
re2c和bison是在centos上编译最新版php编译器的最大变数。总的结论是:根据编译过程中的提示信息,re2c需要最新版0.13.4,bison需要个合适的版本3.0。详情请参考:

可能需要的命令是:
安装re2c:
yum install re2c安装bison-3.0.1:
wget --no-check-certificate https://ftp.gnu.org/gnu/bison/bison-3.0.1.tar.gz
tar -zxvf bison-3.0.1.tar.gz
cd bison-3.0.1/
sudo chmod -R 777 ./
./configure
make
make installphpsrc代码下载
苏南大叔本文的实验龙套演员,截至到发稿,最新php7版本是7.4.28,php8版本是8.1.4。源码都是在github上面下载的,地址是:
然而,对于读者来说,选择一款您需要的phpsrc代码即可。苏南大叔之所以安装了两款,主要原因是想实验的一款扩展php-screw-plus,不支持php8。所以,降级使用了php7来配合实践这款php-screw-plus扩展。总之,选择好您的phpsrc源码。本文中为了行为方便,命令行里面就以php8为主要讲解对象了。

编译过程
编译过程,比较简单。其中的设置./configure参数的步骤,苏南大叔并没有仔细研究对应的选项都有哪些,只是设置了个通用的参数,大家请根据实际情况设置。
wget https://github.com/php/php-src/archive/refs/heads/PHP-8.1.4.zip
unzip PHP-8.1.4.zip
cd php-src-PHP-8.1.4/
chmod -R 755 ././buildconf --force
./configure --prefix=/home/php8
make -j8
make install说明:
./buildconf --force,--force实际上是第二次编译的时候需要添加的参数,但是第一次编译也带上的话,没有问题。./configure --prefix参数,决定最终编译结果的make install的物理位置,请思考之后再做设置。./configure的更多参数,请使用./configure --help查看。nmake -j8表示有8个cpu内核的意思。其实,似乎也没有啥大作用。
编译结果位置
<base>根目录位置是--prefix中设置的。其中的php可执行文件的位置是:
<base>/bin/php编译扩展时,所需要的phpize和php-config的位置是:
<base>/bin/phpize
<base>/bin/php-config参考文献
- https://github.com/php/php-src/
- https://newsn.net/say/centos-bison.html
- https://newsn.net/say/centos-re2c.html
- https://newsn.net/say/centos-phpsrc.html
总结
对于phpsrc编译这件事情上来说,在centos环境下编译,简易程度远超win和mac。所以,特定环境下,选择centos来获得一款最新的php,也是个非常不错的选择。