PHPMailer 由于证书不匹配而发出 PHP 警告
PHPMailer 用户在 PHP 5.6 上连接到 SMTP 主机时可能会遇到警告:
PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected
此警告源于 PHP 5.6 中增强的安全性,它严格验证 SSL 证书。该警告表明 SMTP 主机提供的证书与该主机的预期证书不匹配。
根本原因:
当 SMTP 主机提供时发生不匹配没有与预期主机名匹配的公用名 (CN) 的证书。例如,如果您连接到 mx1.sub4.homie.mail.dreamhost.com 并且证书 CN 为 *.mail.dreamhost.com,PHP 将发出警告。
解决方案:
要解决此问题,有两种方法:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
注意:不建议禁用证书验证,只能作为临时解决方案。
结论:
PHP警告“stream_socket_enable_crypto():对等证书与预期不匹配”可以通过联系 SMTP 主机更新其证书或配置 PHPMailer 忽略证书验证来解决。推荐的解决方案是让 SMTP 主机提供与主机名匹配的有效证书。
以上是为什么 PHPMailer 在 PHP 5.6 中发出有关证书不匹配的 PHP 警告?的详细内容。更多信息请关注PHP中文网其他相关文章!