ubuntu、centos系统从源码编译指定版本php--超详细
php源码部署在github,每个tag对应一个发布版本
如何查看所有的版本?
1、最简单的,直接看github页面,https://github.com/php/php-src/tags
2、把php代码下载下来,先git clone https://github.com/php/php-src.git,再使用git命令查看所有的tag:git branch -a
好了,假设我们已经知道了都有什么版本,接下来我们选中一个版本开始编译。【假设php-8.0.29】
最简单的,可以直接下载github发布的版本源码包,即访问:https://github.com/php/php-src/releases/tag/php-8.0.29,我们可以看到有sorce code,直接下载zip或者tar.gz格式
如果你克隆了整个代码,可以切出该分支, git checkout PHP-8.0.29 ,或者 git clone -b 分支名 https://github.com/php/php-src.git
当你得到原始的对应版本的源码后,接下来可以尝试编译了。
Ubuntu编译
先buildConfig,生成configure文件,具体的参数可以使用 ./buildconf -h 查看,这里force
./buildconf --force
接下来,开始检测构造环境,
./configure
执行了之后,发现没跑成功,报了很多错误,比如configure: error: re2c 0.13.4 is required to generate PHP lexers.这是因为缺少一些依赖,这里直接一键补全
sudo apt install bison re2c libxml2-dev sqlite3
再次./configure,发现还是不行,提示:configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package 'sqlite3' found,它需要的是sqlite3源码而不是发布版本
sudo apt-get install libsqlite3-dev
再次./configure发现成功了,生成了makefile文件,可以直接make安装了
make && sudo make install
等待15分钟左右,编译成功,查看php版本,已经安装了,并且是8.0.29了。
php --version
可以试试写个helloworld,执行一下一般是正常的。
echo '<?php echo "hello,world";' > test.php && php test.php
因为没指定路径,则使用了默认路径,如果忘记了php在哪,可以which php,一般是在/usr/local/bin/ 这个路径可以在./configure时指定,例如:
./configure --prefix=/usr/local/php80/ --enable-debug --enable-fpm
--with-config-file-path=/usr/local/php80/etc/
--with-config-file-scan-dir=/usr/local/php80/etc/php.d
CentOS编译
这里和ubuntu差不多,省略一些文字描述
./buildconf --force
./configure
发现依然是缺少环境,缺哪个,就用yum安装,例如 yum install re2c,yum install libxml2-devel,yum install sqlite-devel
依然是make && make install
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-433.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。