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

Yii2站点Gmail登录报stream_get_contents SSL错误如何排查

enter image description here

问题根因
  • 系统存在多版本OpenSSL冲突:PHP扩展链接的是OpenSSL 3.0.2,系统全局命令调用的是老旧的OpenSSL 1.0.1f,库文件加载混乱会导致SSL握手异常。
  • OpenSSL 3.0.2存在已知兼容bug:该版本对SSL连接的EOF处理逻辑有缺陷,会在正常连接场景下误报unexpected eof while reading错误。
  • SSL配置不符合要求:当前配置未强制指定TLS版本,Google OAuth接口已废弃TLS1.0/1.1,旧版本协议连接会被直接断开;同时CA证书路径配置不全,openssl.capath为空,证书校验流程异常。
  • 原生StreamTransport兼容性不足:Yii2的StreamTransport依赖PHP原生流封装,在OpenSSL3环境下的适配不如cURL扩展稳定。
解决步骤
  • 清理OpenSSL版本冲突
    执行以下命令卸载旧版本OpenSSL残留,重装匹配的依赖和证书库:
    apt remove --purge openssl1.0 libssl1.0*
    apt install --reinstall openssl libssl3 ca-certificates
    update-ca-certificates
    
    执行完成后运行openssl version,确认输出版本和PHP中加载的OpenSSL版本一致,均为3.0.2。
  • 修正PHP的OpenSSL配置
    找到Nginx对应PHP-FPM使用的php.ini文件(路径通常为/etc/php/{你的PHP版本号}/fpm/php.ini),修改openssl配置段:
    openssl.cafile = "/etc/ssl/certs/ca-certificates.crt"
    openssl.capath = "/etc/ssl/certs/"
    
    保存后重启PHP-FPM生效:systemctl restart php{你的PHP版本号}-fpm
  • 调整HttpClient的SSL参数
    不要直接修改vendor下的源码,在实例化yii-httpclient时添加如下SSL配置,强制使用合规的TLS版本,兼容OpenSSL3的校验逻辑:
    $client = new \yii\httpclient\Client([
        'transport' => \yii\httpclient\StreamTransport::class,
        'requestConfig' => [
            'options' => [
                'ssl' => [
                    'verify_peer' => true,
                    'verify_peer_name' => true,
                    'allow_self_signed' => false,
                    'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT,
                    'ciphers' => 'DEFAULT@SECLEVEL=1'
                ]
            ]
        ]
    ]);
    
  • 可选稳定方案
    若调整后仍有异常,直接将传输层换成CurlTransport,cURL扩展的SSL握手逻辑稳定性远高于PHP原生流,配置时指定transport即可:
    $client = new \yii\httpclient\Client([
        'transport' => \yii\httpclient\CurlTransport::class,
        // 其余配置保持不变
    ]);
    
    注意提前确认服务器已安装对应版本的php-curl扩展。

注:原代码中verify_peer => false属于不安全配置,会导致SSL证书校验失效,存在中间人攻击风险,修复问题时请改回开启状态。

内容的提问来源于stack exchange,提问作者pradip.parkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 13:15:40