Laravel 9注册验证邮件发送失败:SMTP SSL证书错误
Laravel 9邮件验证SSL证书验证失败解决方案
针对你遇到的stream_socket_client() SSL操作失败,错误码1,OpenSSL提示证书验证失败问题,以下是经过验证的解决办法:
1. 配置PHP的CA证书路径
多数情况是PHP无法找到有效CA证书文件导致的:
- 下载官方可信的CA证书包,保存为
cacert.pem - 打开
php.ini文件,找到或添加以下配置:curl.cainfo = "/证书文件绝对路径/cacert.pem" openssl.cafile = "/证书文件绝对路径/cacert.pem" - 重启Web服务器(Apache/Nginx)和PHP服务
2. 开发环境临时跳过SSL验证(生产环境禁用)
仅用于本地开发测试,生产环境绝对不能使用:
- 在
config/mail.php的smtp配置块中添加:'smtp' => [ // 原有配置项... 'verify_peer' => false, 'verify_peer_name' => false, ], - 或者通过
.env控制:
在.env中新增:
然后修改MAIL_VERIFY_PEER=falseconfig/mail.php对应项:'verify_peer' => env('MAIL_VERIFY_PEER', true),
3. 核对SMTP服务配置细节
- Gmail:需使用“应用专用密码”(Gmail已关闭低安全性应用访问),确保
.env中MAIL_USERNAME为你的邮箱,MAIL_PASSWORD是生成的应用密码,端口用465或587 - Mailtrap:确认
MAIL_HOST=smtp.mailtrap.io,MAIL_PORT选2525或465,MAIL_USERNAME和MAIL_PASSWORD与Mailtrap控制台提供的一致
4. 更新系统OpenSSL版本
老旧的OpenSSL版本可能无法识别新的证书:
- Windows:下载对应PHP版本的OpenSSL扩展并替换,或更新系统组件
- Mac:用Homebrew执行
brew install openssl更新 - Linux(Ubuntu/Debian):执行
sudo apt update && sudo apt install openssl更新 - 更新后重启PHP服务
内容的提问来源于stack exchange,提问作者Sophie
相关产品推荐
相关产品推荐

