自OS X上的XAMPP 5.6.8上的PHP 5.6.8以来,stream_socket_client()失败了

时间:2015-07-02 09:09:11

标签: php email ssl xampp phpmailer

我刚刚将我的XAMPP开发平台从1.7.3更新到OS X的最新版本5.6.8。这将PHP从5.3.1更新到5.6.8。它破坏了通过SSL连接(而不是TLS)向我的主机站点邮件服务器发送访问者查询的PHPMailer。问题是我的托管网站只使用自签名证书进行身份验证。这对旧的XAMPP没有影响。但是使用最新版本,PHPMailer用于SMTP的函数stream_socket_client会生成此错误:

SSL operation failed with code 1.
OpenSSL Error messages: error:14090086:
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

这就是我所做的

  1. 修改PHPMailer以接受SSL上下文选项 虽然内部SMTP send函数具有可选参数,但PHP Mailer connect函数还不接受SSL上下文选项。此外,我解除了函数stream_socket_client的错误消息。我使用这个选项:
  2. $mail->SMTPOption = array( 'smtp' => array(
    'verify_peer' => false, 
    'verivy_peer_name' => false, 'allow_self_signed' => true) );
    

    但是这没有效果,OpenSSL仍然提出了上述信息。

    1. 在php.ini中添加openssl.cafile和openssl.capath属性。它仍然无效。

    2. PHPMailer Debug输出只有这个内容

    3.  Connection: opening to ssl://wates.idwebhost.com:465, t=300, 
       opt=array ( 'smtp' => array ( 'verify_peer' => false, 
       'verivy_peer_name' => false, 'allow_self_signed' => true, ),)
       SMTP ERROR: Failed to connect to server: (0)
       SMTP connect() failed.
      

      请指导我解决这个问题。

1 个答案:

答案 0 :(得分:0)

好的,显然我使用旧版本的PHPMailer。更新到5.2.10版本后,问题就解决了。