此链接介绍了解决此问题的一些方法: https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure 但我根本不知道在Joomla中应该做什么以及如何防止这种验证,因为我无法为我的网站设置ssl。 警告:
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 /nfsmnt/hosting1_1/1/b/1bec1745-5e90-43d0-beb1-2d132937948b/domain.com/web/libraries/vendor/phpmailer/phpmailer/class.smtp.php on line 344
当许多网站没有运行ssl时,这种验证的意义是什么?
Joomla库中的一段代码(class.smtp.php)
// Begin encrypted connection
if (!stream_socket_enable_crypto(
$this->smtp_conn,
true,
STREAM_CRYPTO_METHOD_TLS_CLIENT
)) {
return false;
}
return true;
}
答案 0 :(得分:0)
你错过了这一点。它不是使用SSL的网站,而是您要连接的邮件服务器。例如,如果您使用PHPMailer通过您的Gmail帐户发送邮件,则无论您的网络服务器是否正常,都将加密与Gmail的连接。
您遇到的问题是您使用的邮件服务器配置错误。如果是对入站连接进行通告加密,则应使用有效证书。错误将是证书已过期,是自签名证书(因此无法信任),或者与您连接的主机名不匹配。本指南中的说明告诉您如何禁用这些检查,并且应该在使用PHPMailer时应用它们,而不是通过更改库本身。您可以通过搜索new PHPMailer
的实例并使用在指南中设置降级SSL选项的代码跟随它来在Joomla代码库中找到执行此操作的位置。请记住,这是解决问题的错误方法。如果您的邮件服务器无法修复,请使用适当的托管公司,知道它在做什么。
对于"没有多少网站运行SSL",这是不正确的。所有网站应运行SSL,但许多网站不运行SSL。现在没有理由不能获得free real certificates with minimal hassle。对于更引人注目的纪录,read this。