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

时间:2020-06-29 20:48:34

标签: php laravel ssl

完整的错误描述是:

ErrorException stream_socket_enable_crypto():SSL操作失败 代码为1的OpenSSL错误消息:error:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败

我目前正在使用Laravel 7和Voyager设置(https://voyager.devdojo.com/)。

我已经在我的配置文件中(基于其他答案)how to fix stream_socket_enable_crypto(): SSL operation failed with code 1

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

我做了php artisan config:cachephp artisan config:clear

但是我仍然遇到相同的错误。

这是我的.env的样子

MAIL_DRIVER=smtp
MAIL_MAILER=smtp
MAIL_FROM_NAME="Voyager"
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=someUsername
MAIL_PASSWORD=somePassword
MAIL_ENCRYPTION=tls

3 个答案:

答案 0 :(得分:1)

该主题不是专家,但是您可以尝试MAIL_ENCRYPTION = null。

我相当确定我过去曾遇到过这种情况,这就是元凶。

答案 1 :(得分:0)

<块引用>

注意:仅在本地主机开发环境中应用此解决方案。经过 这样做,你会有安全风险,所以永远不要将此解决方案应用于 生产环境。

接受的解决方案对我不起作用,所以我在这里发布了对我有用的解决方案。

打开文件

vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php

转到第 258250 行,

你会看到这样的代码 enter image description here

添加以下行

 $options['ssl'] = [
            'verify_peer' => false,
            'verify_peer_name' => false, 'allow_self_signed' => true
        ];

添加行后,它看起来像这样,

enter image description here

运行php artisan config:cache。就是这样。

答案 2 :(得分:0)

好的,我已经解决了这个错误。我改变了我的 .env

我只是将我的 MAIL_DRIVERsmtp 更改为 sendmail,它运行得非常好。

MAIL_DRIVER=sendmail 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=mygmail@gmail.com 
MAIL_PASSWORD=****** 
MAIL_ENCRYPTION=tls

当我在我的本地主机上工作时,MAIL_DRIVER=smtp 工作正常,当我在 cpanel 上上传我的项目时,我收到了这个错误。