完整的错误描述是:
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:cache
和php 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
答案 0 :(得分:1)
该主题不是专家,但是您可以尝试MAIL_ENCRYPTION = null。
我相当确定我过去曾遇到过这种情况,这就是元凶。
答案 1 :(得分:0)
注意:仅在本地主机开发环境中应用此解决方案。经过 这样做,你会有安全风险,所以永远不要将此解决方案应用于 生产环境。
接受的解决方案对我不起作用,所以我在这里发布了对我有用的解决方案。
打开文件
vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php
转到第 258
或 250
行,
添加以下行
$options['ssl'] = [
'verify_peer' => false,
'verify_peer_name' => false, 'allow_self_signed' => true
];
添加行后,它看起来像这样,
运行php artisan config:cache
。就是这样。
答案 2 :(得分:0)
好的,我已经解决了这个错误。我改变了我的 .env
我只是将我的 MAIL_DRIVER 从 smtp 更改为 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 上上传我的项目时,我收到了这个错误。