自 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)