cURL错误60:使用artisan命令发送电子邮件时出现SSL证书问题

时间:2015-12-16 06:08:28

标签: php laravel curl laravel-5.1 guzzle

我在Laravel发送电子邮件时遇到了一个奇怪的问题。

我使用Mailgun,可以在用户注册时发送电子邮件等等。

我开始使用调度命令,并创建了一个自定义工匠命令来获取一些记录并发送一些电子邮件。

但是当我运行此命令时出现错误:

  

cURL错误60:SSL证书问题:无法获取本地颁发者   证书

我已在本地设置cacert.pem并在我的php.ini文件中成功关联,这是我能够正常发送电子邮件的方式。

我不明白为什么我的命令无法发送电子邮件,因为我可以在控制器内发送它们。

这是我用于命令的代码:

$reminders = Reminder::where('utcReminderDate' , '<=', \Carbon\Carbon::now()->format('Y-m-d H:i'))->get();

foreach($reminders as $reminder)
    {
        Mail::send('emails.test', [], function($message) {
            $message->to('me@example.com', 'Joe Bloggs');
            $message->subject('A reminder for you');
        });
    }

我想要收到所有需要发送的提醒,然后循环播放这些提醒。

当我运行命令通过命令行测试它时,它会吐出上面的错误。

任何帮助发送电子邮件的人都会非常感激。如果这会产生影响,我会使用WAMP。

3 个答案:

答案 0 :(得分:0)

您可以像我在本地计算机中那样,从GuzzleHttp\Client方法修改供应商文件夹verify更改false密钥到configureDefaults

您可以阅读此conversation in Laracasts并尝试在某些评论中下载.pem个文件。

以下是一些链接:

之后你应该相应地编辑你的php.ini文件:

curl.cainfo = "[pathtothisfile]\cacert.pem"

PS:我只想编辑供应商文件,因为它更快,也不难实现。

答案 1 :(得分:0)

使用此代码:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);

这适合我。

答案 2 :(得分:0)

很明显,从CLI访问PHP时,PHP可能会加载另一个php.ini文件。 See here

将我的php.ini文件复制到C:\windows中解决了该问题。