gpt4 book ai didi

PHP 5.6.8 证书验证失败

转载 作者:行者123 更新时间:2023-12-02 09:32:56 24 4
gpt4 key购买 nike

平台:Ubuntu14.04 + xampp 5.5.24\5.6.8 + openssl

从 phpmailer 发送电子邮件时出现错误消息:

Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /opt/lampp/htdocs/Sentrifugo_2.0/install/PHPMailer/class.smtp.php on line 270

在一些博客上,我读到我们可以通过 SMTPOptions 允许不安全的连接,并通过使用以下子类化 SMTP 类来实现它:

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

如果有人可以支持确认我应该在哪里配置它,我将非常感激,因为我已经搜索了 class.smtp.php 和 class.phpmailer.php 文件,但找不到 verify_peer 。

此外,在第 270 行,我在 class.smtp.php 中找到了以下代码:

/**
* Initiate a TLS (encrypted) session.
* @access public
* @return bool
*/
public function startTLS()
{
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
return false;
}
// Begin encrypted connection
if (!stream_socket_enable_crypto(
$this->smtp_conn,
true,
STREAM_CRYPTO_METHOD_TLS_CLIENT
)) {
return false;
}
return true;
}

请提出建议 - 提前致谢

最佳答案

这在 the PHPMailer troubleshooting guide 中有介绍。 .

你把事情搞混了。在旧版本的 PHPMailer 中,您只能通过子类化以传入 ssl 设置来解决此问题,但现在您可以通过您发布的代码来完成此操作:

$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
];

这会设置 PHPMailer 的 SMTPOptions 属性,该属性将传递给 stream_socket_client 函数。 PHPMailer 本身没有 verify_peer 属性 - 它是 ssl properties of stream contexts in PHP 中的一个设置。 .

当调用 startTLS() 时,流已经附加了上下文,因此当调用 stream_socket_enable_crypto 时,它将利用 ssl 属性集在创建时就在流上。

请记住,当您选择这种抑制证书验证的方式时,您的安全就会受到损害。

关于PHP 5.6.8 证书验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30801115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com