StreamBuffer.php 第 95 行中的 ErrorException:在 laravel 5 中

Posted

技术标签:

【中文标题】StreamBuffer.php 第 95 行中的 ErrorException:在 laravel 5 中【英文标题】:ErrorException in StreamBuffer.php line 95: in 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 中,它可以工作。

【问题讨论】:

似乎默认配置sendmail 不适合您。您可能想切换到 smtp 邮件。检查谷歌的 SMTP 服务器设置:support.google.com/a/answer/176600?hl=en 是的,gmail 会有自己的 ssl 证书。所以你不会偶然发现这个错误。 mysteryos,请写下您的解决方案作为答案。这样人们就可以投票了。否则,这个问题看起来没有解决方案。 phpMailer - SSL3_GET_SERVER_CERTIFICATE:certificate verify failed的可能重复 OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Failed to enable crypto的可能重复 【参考方案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 存储是最新的。

以上是关于StreamBuffer.php 第 95 行中的 ErrorException:在 laravel 5 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jmeter 聚合报告命令行中打印 95 和 99 百分位数?

根据Python中的值查找第一行文本

第95篇 笔记-solidity中的继承(Inheritance)

HtmlServiceProvider.php 第 36 行中的 FatalErrorException:laravel

从 UITableView 中删除行会更改存储在其他行中的信息

Inflector.php 第 265 行中的 FatalErrorException:语法错误,意外 ':',期待 ';'要么 ''