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

OpenSSL库与头文件版本不匹配致支付网关对接失败求助

解决Windows环境下Apache 2.4.57 + PHP 8.2.8 + OpenSSL 3.1.1版本不兼容问题

问题背景

技术栈:Windows、Apache 2.4.57、OpenSSL 3.1.1、PHP 8.2.8
对接支付网关时触发OpenSSL相关检测失败,排查发现核心问题:OpenSSL库版本为3.1.1(2023-05-30),但头文件版本为3.0.8(2023-02-07),版本不匹配导致兼容性冲突。

已尝试的方案

  • 降级Apache内置OpenSSL至3.0.8:找到内置OpenSSL 3.0.7的Apache 2.4.55版本,但违背升级Apache的初衷,且安全服务商强制要求使用2.4.57版本,仅作为最后备选方案。
  • 更换PHP openssl扩展适配OpenSSL 3.1.1:未找到适配的php_openssl.dll,需获取适配方法。

适配PHP 8.2.8的OpenSSL 3.1.1扩展获取方案

1. 从官方PHP编译包获取对应扩展

  • 选择与当前PHP运行模式匹配的编译包:Apache模块模式选线程安全(TS),FastCGI模式选非线程安全(NTS),下载PHP 8.2.8的完整扩展包。
  • 解压后提取php_openssl.dll,替换PHP安装目录ext文件夹下的同名文件。
  • 重点确认:下载的PHP编译包需基于OpenSSL 3.1.1编译,可查看包内的编译说明文档验证依赖版本。

2. 自行编译openssl扩展

  • 准备编译环境:安装Visual Studio 2019(PHP 8.2推荐版本)、CMake、Perl工具。
  • 获取PHP 8.2.8源码和OpenSSL 3.1.1源码,配置编译参数时指定OpenSSL路径:
    configure --with-openssl=[你的OpenSSL 3.1.1源码/安装路径]
    
  • 执行编译流程,生成适配的php_openssl.dll后替换至PHP扩展目录。

3. 验证适配结果

替换扩展后,在命令行执行:

php -i | findstr "OpenSSL"

确认输出的OpenSSL Library Version和OpenSSL Header Version均为3.1.1,即表示适配成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:51