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

Posted

技术标签:

【中文标题】自 OS X 上 XAMPP 5.6.8 上的 PHP 5.6.8 以来,stream_socket_client() 失败【英文标题】:stream_socket_client() failed since PHP 5.6.8 on XAMPP 5.6.8 on OS X 【发布时间】:2015-09-19 17:30:15 【问题描述】:

我刚刚将我的 XAMPP 开发平台从 1.7.3 更新到 OS X 的最新版本 5.6.8。这将 php 从 5.3.1 更新到 5.6.8。它破坏了通过 SSL 连接(不是 TLS)上的 SMTP 向我的托管站点邮件服务器发送访问者查询的 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

这就是我所做的

    修改 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 仍然会引发上述消息。

    在 php.ini 中添加 openssl.cafile 和 openssl.capath 属性。还是不行。

    PHPMailer Debug 输出只有这个内容

 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】:

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

【讨论】:

以上是关于自 OS X 上 XAMPP 5.6.8 上的 PHP 5.6.8 以来,stream_socket_client() 失败的主要内容,如果未能解决你的问题,请参考以下文章

将小的 .sql 文件上传到 MySQL 数据库文件返回错误(OS X 上的 XAMPP)

Mac os 上的 XAMPP - Apache 无法启动

我无法通过终端访问 mac os x 上的 mysql

如何在 Mac OS 上的 XAMPP 下运行 mysqldump

XAMPP、Mac OS X 和链接文件

XAMPP 管理器无法在 OS X 上启动服务器,但它可以在终端上运行