ubuntu、centos系统从源码编译指定版本php--超详细

php 编译 编程技术
发布日期 2023-06-17 更新日期 2023-06-17 阅读次数 159 文章字数 1.4k

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 许可协议。

php 编译

发表评论

相关推荐
朱丰华   |   7个月前   |   php

php判断是否被iframe

221    评论    点赞
朱丰华   |   1年前   |   php

php正则表达式定界符:异常Delimiter must not be alphanumeric or backslash

190    评论    点赞
朱丰华   |   1年前   |   请求 · 一个

ab测压命令,apache测压工具

172    评论    点赞
朱丰华   |   1年前   |   php · 缓存 · opcache

php 加速、提高并发opcache

198    评论    点赞
朱丰华   |   1年前   |   编译 · linux · 平台

Go 交叉编译 (跨平台编译)

173    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

113    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

115    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 字符串

如何在 PHP 中将字符串的第一个字母转换为大写

148    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 正则

php正则表达式原生字符

85    评论    点赞
朱丰华   |   1年前   |   字符 · php · 比较

PHP比较字符串大小相关函数

110    评论    点赞
朱丰华   |   1年前   |   php

windows下编写、编译php扩展

158    评论    点赞
朱丰华   |   1年前   |   linux · php

linux下编写、编译php扩展

150    评论    点赞
朱丰华   |   1年前   |   php · 混淆 · obfuscate · git

yakpro-po混淆php代码

105    评论    点赞
朱丰华   |   1年前   |   c语言 · 编译

C语言中预编译#if的使用

75    评论    点赞
朱丰华   |   1年前   |   php

php扩展编译nts的方法

86    评论    点赞
朱丰华   |   1年前   |   js · 模块 · nodejs

nodejs引入自定义模块

47    评论    点赞
朱丰华   |   1年前   |   python · linux · www

linux给www用户【非root】安装python3

186    评论    点赞
朱丰华   |   1年前   |   linux · 变量 · 环境

linux查看环境变量、设置环境变量

94    评论    点赞
朱丰华   |   1年前   |   docker · 安装 · linux

centos安装docker

105    评论    点赞
朱丰华   |   1年前   |   js · php · 字符 · 字符串

php json_encode对字符串转义用法

135    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞