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 install
phpsrc
代码下载
苏南大叔本文的实验龙套演员,截至到发稿,最新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
,也是个非常不错的选择。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。