You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04 LTS手动编译PHP 7.4.30遇OpenSSL兼容问题

结论

可以在Ubuntu Server 22.04 LTS上完成PHP 7.4.x的手动编译,出现OSSL_DEPRECATEDIN_3_0报错的核心原因是版本适配断层:

  • Ubuntu 22.04 系统默认预装OpenSSL 3.0,而PHP 7.4的官方维护终止于OpenSSL 3.0正式发布前,源码中调用的大量OpenSSL 1.1.x版本接口在OpenSSL 3.0中被标记为废弃、部分接口被直接移除,直接用系统默认OpenSSL编译必然触发报错。
  • Ubuntu 18.04默认预装OpenSSL 1.1.x,和PHP7.4的适配要求完全匹配,因此相同编译流程可以正常执行。
可行编译方案

推荐两种无系统侵入性的方案,不会破坏Ubuntu 22.04原有系统依赖:

方案1:独立编译OpenSSL 1.1.1(兼容性最优,无代码修改)

这个方案完全复刻Ubuntu 18.04的OpenSSL依赖环境,不需要修改PHP源码,不会出现隐藏兼容问题:

  • 第一步先安装PHP编译所需的基础依赖:
sudo apt update && sudo apt install build-essential autoconf bison re2c libxml2-dev libsqlite3-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libzip-dev pkg-config zlib1g-dev
  • 下载OpenSSL 1.1.1系列最终稳定版(1.1.1w)源码,解压后执行编译安装,必须指定独立安装目录,绝对不能覆盖系统自带的OpenSSL 3.0,否则会导致apt、ssh等系统核心组件失效:
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl-1.1 --openssldir=/usr/local/openssl-1.1 shared zlib
make -j$(nproc)
sudo make install
  • 进入PHP 7.4.x源码目录,执行configure配置时,手动指定OpenSSL的路径为刚才独立安装的1.1.1版本,后面追加你需要的其他PHP扩展编译参数即可:
./configure --with-openssl=/usr/local/openssl-1.1 # 其他参数按需添加,例如 --with-curl --with-mysqli --with-zip 等
  • 后续按正常流程执行make -j$(nproc)、sudo make install即可完成编译,全程不会触发OpenSSL 3.0相关的废弃接口报错。

方案2:给PHP7.4源码打OpenSSL3兼容补丁

如果不想额外编译独立版本的OpenSSL,可以直接给PHP7.4源码打社区维护的兼容补丁,适配系统自带的OpenSSL 3.0:

  • 安装完基础编译依赖后,下载PHP7.4.x源码并解压进入源码目录
  • 打入对应小版本的OpenSSL3兼容补丁,补丁会自动替换源码中不兼容OpenSSL3的接口调用
  • 正常执行configure配置(不需要额外指定openssl路径)、编译安装即可。
注意事项

禁止通过apt强制卸载、降级系统自带的OpenSSL 3.0版本。Ubuntu 22.04的包管理工具、远程连接服务、网络请求组件等大量核心程序都依赖OpenSSL3,强制替换版本会直接导致系统崩溃、无法远程连接。

内容的提问来源于stack exchange,提问作者paj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:36:17