WAMP / XAMPP中的SSL错误:stream_socket_enable_crypto():SSL操作失败

时间:2017-10-31 12:39:47

标签: php phpmailer

一周前,我正在使用PHPMailer测试WAMP中的一些组件,一切正常。第二天它就停止了工作。 WAMP中的配置没有改变。使用SMTPDebug时,尝试发送电子邮件时出现以下错误:

  

连接失败。错误#2:stream_socket_enable_crypto():SSL   代码1操作失败.OpenSSL错误   消息:错误:14090086:SSL   例程:ssl3_get_server_certificate:证书验证失败   [C:... \ SMTP.php第404行]

我使用x86版本的WAMP和XAMPP进行了其他测试(我目前使用x64 WAMP),但没有成功,我得到了同样的错误。

所有测试均使用gmail “允许安全性较低的应用”启用。

在文档中快速搜索后,我发现问题是由于验证了SSL证书。作为一种解决方法,我可以使用以下代码跳过此检查:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

但正如已经说过的,这是一种解决方法。我想知道问题的根源在哪里,我不明白为什么它停止工作。我已经尝试更换WAMP / XAMPP文件夹中的证书但没有成功。也进行了广泛的研究,但没有结果。知道如何在没有任何解决方法的情况下解决证书验证问题吗?

1 个答案:

答案 0 :(得分:1)

可能重复:Warning: stream_socket_enable_crypto(): SSL operation failed with code 1

有很多配置会导致出现此错误。但更常见的是您的系统配置设置不正确。要正确地执行此操作:1-检查是否有用于OPENSSL的cacert.pem文件,如果还没有,请根据您的php版本从cacert.pem下载正确的版本并将您的php.ini文件配置为" 2 - "

2-如果您有这个文件,那么您必须在php.ini文件中查找并查看是否已在其中设置。这样做:查找行

openssl.cafile ="example address..\cacert.pem"

如果您找到具有特定地址的行,请查找该地址中的cacert.pem文件(如果找到),而不是使用cacert.pem文件完成。否则,你应该使用正确的地址。

希望这能帮到你..祝你好运..!