PHP警告:fgets():SSL操作失败,代码为1

时间:2018-01-25 11:39:46

标签: php ssl horde

这是错误日志,我不知道如何解决这个问题。

  

[1月25日10:39:42.689306 2018] [:错误] [pid 21084]       PHP警告:fgets():SSL操作失败,代码为1。       OpenSSL错误消息:
错误:06065064:数字包络例程:EVP_DecryptFinal_ex:错误解密
错误:06065064:数字包络例程:EVP_DecryptFinal_ex:错误解密
错误:06065064:数字包络例程:EVP_DecryptFinal_ex: bad decrypt
错误:06065064:数字信封例程:EVP_DecryptFinal_ex:第156行的../vendor/pear-pear.horde.org/Horde_Imap_Client/Horde/Imap/Client/Socket/Connection/Socket.php中的解密错误

public function read($size = null)
{
    $got_data = false;
    $literal_len = null;
    $token = new Horde_Imap_Client_Tokenize();

    do {
        if (feof($this->_stream)) {
            $this->close();
            $this->_params['debug']->info(
                'ERROR: Server closed the connection.'
            );
            throw new Horde_Imap_Client_Exception(
                Horde_Imap_Client_Translation::r("Mail server closed the connection unexpectedly."),
                Horde_Imap_Client_Exception::DISCONNECT
            );
        }

        if (is_null($literal_len)) {
            $buffer = '';

            while (($in = fgets($this->_stream)) !== false) {
                $got_data = true;

                if (substr($in, -1) === "\n") {
                    $in = rtrim($in);
                    $this->_params['debug']->server($buffer . $in);
                    $token->add($in);
                    break;
                }

                $buffer .= $in;
                $token->add($in);
            }

            /* Check for literal data. */
            if (is_null($len = $token->getLiteralLength())) {
                break;
            }

            // Skip 0-length literal data.
            if ($len['length']) {
                $binary = $len['binary'];
                $literal_len = $len['length'];
            }

            continue;
        }

        $old_len = $literal_len;

        while (($literal_len > 0) && !feof($this->_stream)) {
            $in = fread($this->_stream, min($literal_len, 8192));
            /* Only store in stream if this is something more than a
             * nominal number of bytes. */
            if ($old_len > 256) {
                $token->addLiteralStream($in);
            } else {
                $token->add($in);
            }

            if (!empty($this->_params['debugliteral'])) {
                $this->_params['debug']->raw($in);
            }

            $got_data = true;
            $literal_len -= strlen($in);
        }

        $literal_len = null;

        if (empty($this->_params['debugliteral'])) {
            $this->_params['debug']->server('[' . ($binary ? 'BINARY' : 'LITERAL') . ' DATA: ' . $old_len . ' bytes]');
        }
    } while (true);

    if (!$got_data) {
        $this->_params['debug']->info('ERROR: read/timeout error.');
        throw new Horde_Imap_Client_Exception(
            Horde_Imap_Client_Translation::r("Error when communicating with the mail server."),
            Horde_Imap_Client_Exception::SERVER_READERROR
        );
    }

    return $token;
}

错误出现在

while (($in = fgets($this->_stream)) !== false) {

我在同一台服务器上有另一个应用程序实例,其设置相同,只是不同的数据库和域名。

其他实例似乎工作正常,没有出现此错误的问题。

注意:Horde是一种用于发送电子邮件的PHP库。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:-1)

请尝试更改您的设置,如下所示:

<?php
    $yourArrayOptions=array(
    "ssl"=>array(
    "verify_peer"=>false,
    "verify_peer_name"=>false,
 ),
)
$response = file_get_contents("fileName", false, 
stream_context_create($yourArrayOptions));
echo $response; ?>

请点击此处获取更好的解释file_get_contents(): SSL operation failed with code 1. And more