一周前,我正在使用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文件夹中的证书但没有成功。也进行了广泛的研究,但没有结果。知道如何在没有任何解决方法的情况下解决证书验证问题吗?
答案 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文件完成。否则,你应该使用正确的地址。
希望这能帮到你..祝你好运..!