首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >stream_get_contents():SSL操作失败,代码1. OpenSSL错误消息:OpenSSL:0A000126:SSL例程::意外读取

stream_get_contents():SSL操作失败,代码1. OpenSSL错误消息:OpenSSL:0A000126:SSL例程::意外读取
EN

Stack Overflow用户
提问于 2022-06-07 13:48:53
回答 1查看 719关注 0票数 0

我一直在尝试在我的网站上使用Gmail登录。但是我得到了"stream_get_contents():SSL操作在代码1中失败。OpenSSL错误消息:错误:0A000126:SSL例程::意外的eof在读取时“网站构建在yii2上并托管在aws上的nginx服务器上。

代码语言:javascript
运行
复制
php -i | grep -i openssl
SSL Version => OpenSSL/3.0.2
libSSH Version => libssh/0.9.6/openssl/zlib
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 3.0.2 15 Mar 2022
OpenSSL Header Version => OpenSSL 3.0.2 15 Mar 2022
Openssl default config => /usr/lib/ssl/openssl.cnf
openssl.cafile => /usr/lib/ssl/cert.pem => /usr/lib/ssl/cert.pem
openssl.capath => no value => no value
Native OpenSSL support => enabled

openssl version
OpenSSL 1.0.1f 6 Jan 2014

引发异常的文件的位置

project-root-path/vendor/yiisoft/yii2-httpclient/src/StreamTransport.php在第63行

代码语言:javascript
运行
复制
   public function send($request)
{
    $request->beforeSend();

    $request->prepare();

    $url = $request->getFullUrl();
    $method = strtoupper($request->getMethod());

    $contextOptions = [
        'http' => [
            'method' => $method,
            'ignore_errors' => true,
        ],
        'ssl' => [
            'verify_peer' => false,
        ],
    ];

    $content = $request->getContent();
    if ($content !== null) {
        $contextOptions['http']['content'] = $content;
    }
    $headers = $request->composeHeaderLines();
    $contextOptions['http']['header'] = $headers;

    $contextOptions = ArrayHelper::merge($contextOptions, $this->composeContextOptions($request->getOptions()));

    $token = $request->client->createRequestLogToken($method, $url, $headers, $content);
    Yii::info($token, __METHOD__);
    Yii::beginProfile($token, __METHOD__);

    try {
        $context = stream_context_create($contextOptions);
        $stream = fopen($url, 'rb', false, $context);
        $responseContent = stream_get_contents($stream);
        // see http://php.net/manual/en/reserved.variables.httpresponseheader.php
        $responseHeaders = $http_response_header;
        fclose($stream);
    } catch (\Exception $e) {
        Yii::endProfile($token, __METHOD__);
        throw new Exception($e->getMessage(), $e->getCode(), $e); // this is line number 63 
    }

    Yii::endProfile($token, __METHOD__);

    $response = $request->client->createResponse($responseContent, $responseHeaders);

    $request->afterSend($response);

    return $response;
}
EN

回答 1

Stack Overflow用户

发布于 2022-06-12 15:37:46

刚刚开始有这个问题,经过一些研究后,这似乎是一个问题与OpenSSL自由:https://bugs.php.net/bug.php?id=79589

PHP8.1.7已经附带了一个修复程序,所以更新您的PHP可能会修复以下问题:https://www.php.net/ChangeLog-8.php#8.1.7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72532373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档