【问题标题】:ErrorException in StreamBuffer.php line 95: in laravel 5StreamBuffer.php 第 95 行中的 ErrorException:在 laravel 5 中
【发布时间】:2015-07-05 15:18:58
【问题描述】:

我将我的应用程序从Laravel 4 转移到Laravel 5,在发送电子邮件时,特别是在(重置密码).. 我收到了这个错误

stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL

错误信息:error:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

但在 laravel 4 中,它可以工作。

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

这是您的 SSL 证书有误。您正在尝试使用没有正确证书的 SSL 连接(加密的安全连接)。

那是因为您从 localhost 进行连接,这不安全,并且被连接阻止。您可以通过将 localhost 连接更改为基于 SSL 的连接来避免这种情况。

还要检查并在 'config/mail.php' 这个文件中添加以下代码。

'stream' => ['ssl'=> ['allow_self_signed'=>true, 'verify_peer'=>false, 'verify_peer_name'=>false] ],

【讨论】:

    【解决方案2】:

    添加

    $mail->SMTPOptions = array(
       'ssl' => array(
       'verify_peer' => false,
       'verify_peer_name' => false,
       'allow_self_signed' => true
     ));
    

    之前

    mail->send()
    

    替换

    require "mailer/class.phpmailer.php";
    

    require "mailer/PHPMailerAutoload.php";
    

    【讨论】:

      【解决方案3】:

      转到位置 \vendor\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php en la linea 259。评论以下内容:

      //$options = array();

      并添加。 $options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true);

      :D!

      【讨论】:

        【解决方案4】:

        你可以使用谷歌应用密码,对我来说,用应用密码更改gmail密码后它就可以了,你可以通过访问我的帐户>登录>

        【讨论】:

          【解决方案5】:

          我遇到了类似的问题,所以我设置了

          MAIL_ENCRYPTION= 在 .env 文件中。

          对我来说效果很好。

          【讨论】:

          • 这是否意味着电子邮件将在没有任何加密的情况下发送?
          【解决方案6】:

          如果您基本上使用 Windows 进行开发,这是常见的问题。

          将您的邮件驱动程序从“smtp”更改为“邮件”会有所帮助。

          【讨论】:

            【解决方案7】:

            此错误表示 SSL 证书验证失败。
            一个快速的解决方法是在条件之后将这些行添加到 StreamBuffer.php:

            if (!empty($this->_params['sourceIp']))

            $options['ssl']['verify_peer'] = FALSE;
            $options['ssl']['verify_peer_name'] = FALSE;
            

            【讨论】:

            • 这只是一个快速修复,因为它有效地禁用了正在连接的服务器的身份验证。任何其他系统都可以拦截流量。 PHP 中的 Curl 通常默认使用一个空的 CA 存储来进行证书验证,因此这里可能会出现同样的问题。查看 openssl_get_cert_locations() 是否显示任何线索并确保您的 CA 存储是最新的。
            猜你喜欢
            • 2017-08-07
            • 1970-01-01
            • 2018-06-10
            • 2017-09-24
            • 2019-10-17
            • 2016-01-24
            • 2016-04-09
            • 2017-10-23
            • 2018-06-28
            相关资源
            最近更新 更多