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


stream_socket_client() failed since PHP 5.6.8 on XAMPP 5.6.8 on OS X

我刚刚将我的XAMPP开发工具从1.7.3更新到OS X的最新版本5.6.8。这将PHP从5.3.1更新到5.6.8。它打破了PHPMailer,通过SSL连接(而不是TLS(上的SMTP向我的托管站点邮件服务器发送访问者查询。问题是我的托管网站只使用自签名证书进行身份验证。这对旧的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上下文选项PHP Mailer send函数还不接受SSL上下文选项,尽管内部SMTP connect函数有可选参数。此外,我还取消了函数stream_socket_client的错误消息。我使用此选项:
$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调试输出只有以下内容

 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.

请指导我解决这个问题。

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