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

同一服务器PHP Curl调用出现SSL unexpected eof while reading错误排查

解决OpenSSL 3下PHP Curl出现error:0A000126:SSL routines::unexpected eof while reading错误

你遇到的这个错误确实源于OpenSSL 3重新引入的防截断攻击检测机制。虽然是服务器向自身发起Curl调用,但客户端(PHP Curl)和服务端(httpd)的SSL/TLS上下文是独立的,配置不匹配就会触发该错误。结合你的环境和配置,具体排查与修复方案如下:

核心原因

你的httpd配置已严格限定允许的TLS版本(仅TLSv1.2和TLSv1.3)及对应密码套件,但PHP Curl请求未明确指定这些参数,导致客户端可能尝试使用服务端不支持的TLS版本或套件,触发OpenSSL 3的防截断检测,最终出现EOF错误。

修复步骤

1. 为PHP Curl指定TLS版本

在Curl选项中添加CURLOPT_SSLVERSION,强制使用服务端允许的TLS版本:

CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2 | CURL_SSLVERSION_TLSv1_3

2. 匹配服务端的密码套件

将CURLOPT_SSL_CIPHER_LIST设置为与httpd配置一致的套件列表:

CURLOPT_SSL_CIPHER_LIST => 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:AES256+EECDH:AES256+EDH'

修改后的完整Curl选项示例

CURLOPT_HTTPGET => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_FAILONERROR => FALSE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 60,
CURLOPT_SSL_CIPHER_LIST => 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:AES256+EECDH:AES256+EDH',
CURLOPT_CAINFO => '/path/to/ca-certs.pem',
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2 | CURL_SSLVERSION_TLSv1_3

额外检查点

  • 执行php -i | grep OpenSSL,确认PHP Curl扩展编译时使用的是OpenSSL 3.0.1版本,避免版本不兼容问题。
  • 查看httpd的SSL错误日志(通常路径为/var/log/httpd/ssl_error_log),获取握手过程中的详细错误信息,辅助定位问题。
  • 使用系统curl命令行工具测试,验证配置有效性:
    curl -v --tlsv1.2 --tlsv1.3 --ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:AES256+EECDH:AES256+EDH" https://your-local-domain/path
    
    如果命令行请求成功,说明问题确实出在PHP Curl的配置上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:07:13