遇到了应从具有自签名证书的邮件服务器发送电子邮件的问题,我得到的错误是:
PHP 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 class.smtp.php on line 327.
有没有人遇到过类似的事情?
编辑:
我也尝试过设置stream_context参数(params:SSL上下文选项):
$options['ssl']['verify_peer'] = false; $options['ssl']['verify_peer_name'] = false; $options['ssl']['allow_self_signed'] = true;
运气不好,它仍然会失败,并出现与上述相同的错误。
谢谢。
PHP 5.6引入了SSL证书验证,因此,如果您的配置被破坏,它将因该错误而失败。您应该修复SSL,但是可以通过将SMTPOptions属性设置为不验证证书来恢复到旧的行为:
SMTPOptions
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
编辑库会破坏整个库的作用-如果按照Kaf的回答建议进行操作,则升级时代码会中断。真的,不要那样做。
编者注 :禁用SSL验证会带来 安全隐患。 如果没有验证SSL / HTTPS连接的真实性,恶意攻击者可能会冒充受信任的终结点(例如GitHub或其他远程Git主机),并且您将容易受到中间人攻击。 使用此解决方案之前,请确保您完全了解安全问题。