PHP 8.1.14升级低版本openssl扩展的操作方法

news2024/11/18 23:48:10

问题背景:

PHP8.1.4内嵌openssl源码编译出来的openssl库版本号是1.0.2.x系列,低版本的openssl扩展存在安全漏洞,需要将该扩展升级openssl 社区最新版本3.0.8

操作步骤:

安装最新版本的openssl

  wget https://github.com/openssl/openssl/releases/download/openssl-3.0.8/openssl-3.0.8.tar.gz
  tar -zxvf openssl-3.0.8.tar.gz
  mkdir -p /usr/local/openssl
 ./Configure --prefix=/usr/local/openssl --openssldir=/usr/local/openssl 
   make && make install
   ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
   ln -s /usr/local/openssl/lib64/libcrypto.so.3  /usr/lib64/libcrypto.so.3
   cp -a /usr/local/openssl/bin/openssl /usr/bin

安装完毕以后执行

openssl verion -a

在这里插入图片描述

安装PHP8.1.4+openssl3.0.8扩展

安装bison

yum install bison

安装re2c

wget https://github.com/skvadrik/re2c/archive/refs/tags/3.0.tar.gz
tar -zxvf 3.0.tar.gz
cd re2c-3.0
yum install git
./autogen.sh
./configure
make
make install

下载PHP8.1.14

wget https://github.com/php/php-src/archive/refs/tags/php-8.1.14.tar.gz
tar -zxvf php-8.1.14.tar.gz
cd php-8.1.4
mkdir -p /usr/local/php

设置动态链接库的位置

PKG_CONFIG_PATH
作用:pkg-config用来检索系统中安装库文件的信息,典型的是用作库的编译和连接,用于放置.pc库

export PKG_CONFIG_PATH=/usr/local/openssl/lib64/pkgconfig

在这里插入图片描述

PKG_CONFIG_LIBDIR
如果你想覆盖掉原来的pkg,可选择用PKG_CONFIG_LIBDIR。因为PKG_CONFIG_LIBDIR的优先级比 PKG_CONFIG_PATH 高,所以会覆盖PKG_CONFIG_PATH的设置。LD_LIBRARY_PATH,用于放置.so库

编译PHP

./configure --prefix=/usr/local/php --with-config-path=/usr/local/php/lib --with-openssl=/usr/local/openssl 
make
make instal

查看PHP编译的openssl版本信息

vi test.php

在该文件中添加如下内容

<?php phpinfo();?>

执行如下命令查看openssl版本信息

php test.php

在这里插入图片描述

这说明PHP内置的openssl扩展升级成功。
经验总结:
在编译openssl的过程中,很容易忽略的一点就是PKG_CONFIG_PATH参数的设置,如果不手动设置pc库的路径,编译器就会跑到/usr/lib64/pkgcofig目录下寻找openssl.pc库文件,它会读取该文件的版本信息并链接接到PHP中。
在这里插入图片描述
在这里插入图片描述
这也解释了之前为什么我编译出来的openssl.so版本号为1.0.2k,如果设置了PKG_CONFIG_PATH参数,编译器会优先搜索PKG_CONFIG_PATH指向的路径是否有openssl.pc库文件的版本信息,如果有则优先采用PKG_CONFIG_PATH指向的路径,如果没有则采用/usr/lib64/pkgconfig目录下的库文件。

参考链接:
https://www.cnblogs.com/rainsoul/p/10567390.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试总结(四)

synchroize的实例、静态、代码块的锁对象 修饰实例方法 修饰静态方法 修饰代码块 1、修饰实例方法 &#xff08;锁当前对象实例&#xff09; 给当前对象实例加锁&#xff0c;进入同步代码前要获得 当前对象实例的锁 。 synchronized void method() {//业务代码 }2、修饰静…

在vue中如果computed属性是一个异步操作怎么办?

在计算属性中使用异步方法时&#xff0c;可以使用async/await来处理异步操作。由于计算属性是基于它们的依赖缓存的&#xff0c;所以我们需要使用一个返回Promise的异步方法来确保计算属性能够正常运行。 下面是一个简单的示例&#xff0c;演示如何在计算属性中使用异步方法&am…

P6入门:P6 Professional常用快捷键/热键

目录 一 引言 Primavera P6 专业版 Primavera P6 EPPM&#xff08;网络客户端&#xff09; Primavera P6 Alt 键 Primavera P6 功能键 一 引言 在 Oracle Primavera P6 中&#xff0c;有热键命令可以节省宝贵的时间。尤其是作为一个与 Primavera P6 长打交道人熟练掌握这…

苹果手机备份的文件在电脑什么地方 苹果备份文件怎么查看

在这个网络信息时代&#xff0c;为手机进行定期备份已经成为了家常便饭。在使用备份软件对苹果手机进行备份后&#xff0c;苹果手机备份的文件在什么地方&#xff0c;苹果备份文件怎么查看呢&#xff1f;本文就带大家来了解一下。 一、苹果手机备份的文件在电脑什么地方 大家…

数据库三大范式、BC范式、第四范式

目录第一范式&#xff08;1NF&#xff09;&#xff1a;原子性&#xff08;存储的数据应该具有“不可再分性”&#xff09;第二范式&#xff08;2NF&#xff09;&#xff1a;唯一性 (消除非主键部分依赖联合主键中的部分字段)&#xff08;一定要在第一范式已经满足的情况下&…

Python之flask基础

文章目录入门小案例及认识路由小总结配置文件路由系统路由支持正则cbv &#xff08;用的比较少&#xff09;模板渲染变量及循环请求响应pipreqs&#xff08;找当前项目依赖的包&#xff09;闪现&#xff08;flash&#xff09;请求扩展&#xff08;类似中间件&#xff09;猴子补…

【Redis】Redis集群之哨兵机制

【Redis】Redis集群之哨兵机制 文章目录【Redis】Redis集群之哨兵机制1. 哨兵的作用和原理1.1 哨兵的作用1.2 redis服务状态监控1.3 选举新master1.4 故障转移1.5 总结2. 搭建哨兵集群2.1 准备实例和配置2.2 启动2.3 测试3. RedisTemplate的哨兵模式1. 哨兵的作用和原理 1.1 哨…

1634_linux中把pdf拆分成独立的图片文件

全部学习汇总&#xff1a; GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; (github.com) 最近工作学习之中使用pdf的频次非常高&#xff0c;这种格式的通用性的确是不错。在目前的很多平台上都有很好用的软件。不过&#xff…

ios设备管理软件 2.16.9官网Mac/Windows下载电脑版功能介绍

imazing 2.16.9官网Mac/Windows下载电脑版是款针对苹果设备所打造的管理工具。iMazing为用户提供多种设备管理功能&#xff0c;每一位用户都能以自己的形式管理苹果设备。iMazing与苹果设备连接后&#xff0c;用户就可以轻松传输文件&#xff0c;浏览保存信息等。 应用介绍 i…

Zookeeper3.5.7版本——集群启动停止脚本

目录一、Zookeeper3.5.7集群部署&#xff08;linux环境-centos7&#xff09;二、3台服务器信息三、Zookeeper3.5.7集群启动停止脚本3.1、编写zk.sh脚本3.2、增加脚本执行权限3.3、执行Zookeeper 集群的zk.sh脚本四、执行脚本启动Zookeeper 集群五、执行脚本查看Zookeeper 集群状…

Lesson11---分类问题

11.1 逻辑回归 11.1.1 广义线性回归 课程回顾 线性回归&#xff1a;将自变量和因变量之间的关系&#xff0c;用线性模型来表示&#xff1b;根据已知的样本数据&#xff0c;对未来的、或者未知的数据进行估计 11.1.2 逻辑回归 11.1.2.1 分类问题 分类问题&#xff1a;垃圾…

SS-ELM-AE与S2-BLS相关论文阅读记录

Broad learning system for semi-supervised learning 摘要&#xff1a;本文认为&#xff0c;原始BLS采用的稀疏自编码器来生成特征节点是一种无监督学习方法&#xff0c;这意味着忽略了标注数据的一些信息&#xff0c;并且难以保证同类样本之间的相似性和相邻性&#xff0c;同…

CentOS 7.9汇编语言版Hello World

先下载、编译nasm汇编器。NASM汇编器官网如下图所示&#xff1a; 可以点图中的List进入历史版本下载网址&#xff1a; 我这里下载的是nasm-2.15.05.tar.bz2 在CentOS 7中&#xff0c;使用 wget http://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2下载…

用Python Flask为女朋友做一个简单的网站(附可运行的源码)

&#x1f31f;所属专栏&#xff1a;献给榕榕&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该专栏系为女友准备的&#xff0c;里面会不定时发一些讨好她的技术作品&#xff0c;感兴趣的小伙伴可以关注一下~&#x1f449;文章简介…

微信小程序原生开发功能合集四:复选框组件的封装

本章实现小程序复选框组件的封装,使用check及check-group组件实现复选框,封装数据加载过程,并自动实现数据解析及生成,实现相应方法。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:  …

k-Medoids 聚类系列算法:PAM, CLARA, CLARANS

前言 如果你对这篇文章可感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 kkk-Means 作为一种经典聚类算法&#xff0c;相信大家都比较熟悉&#xff0c;其将簇中所有的点的均值作为簇中心&#xf…

JavaScript- Map、Set、WeakMap、WeakSet、简单模拟Map

文章目录Map常见方法set常见方法WeakMapWeakSet如何实现一个Map?(简单模仿)Map Map是一种键值对的结构 常见方法 Map.prototype.set()Map.prototype.has()Map.prototype.get()Map.prototype.delete() set 常见方法 Set类似于数组&#xff0c;但是里面成员的值都是唯一的…

【Java】Spring MVC程序开发

文章目录Spring MVC程序开发1. 什么是Spring MVC&#xff1f;1.1 MVC定义1.2 MVC 和 Spring MVC 的关系2. 为什么学习Spring MVC&#xff1f;3. 怎么学习Spring MVC&#xff1f;3.1 Spring MVC的创建和连接3.1.1 创建Spring MVC项目3.1.2 RequestMapping 注解介绍3.1.3 Request…

OpenCV实战(12)——图像滤波详解

OpenCV实战&#xff08;12&#xff09;——图像滤波详解0. 前言1. 频域分析2. 低通滤波器3. 图像下采样3.1 使用低通滤波器下采样图像3.2 内插像素值4. 中值滤波器5. 完整代码小结系列链接0. 前言 滤波是信号和图像处理中的基本任务之一&#xff0c;其旨在有选择地提取图像的某…

【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

文章目录前言一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址&#xff08;方法一&#xff09;2.1.2 使用epel的方式进行安装&#xff08;方法二&#xff09;2.2 开始安装nginx2.3 启动并进行测试2.4 其他的一些用法&#xff1a;三. 编译方式安装ngin…