警告:stream_socket_enable_crypto():SSL操作失败,代码为1

Eug*_*jus 7 php apache ssl freebsd phpmailer

我有CSCart的问题,它无法通过谷歌帐户发送邮件.要检查服务器配置或CSCart脚本中是否存在问题,我安装了干净的PHPMailer库并尝试使用示例脚本发送测试消息.结果是一样的:

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 [script path]/class.smtp.php on line 338    
Run Code Online (Sandbox Code Playgroud)

来自控制台的OpenSSL连接运行良好.

FreeBSD 10.0,Apache24,php5.6.

我在谷歌找不到任何信息,现在我甚至不知道在哪个配置文件中搜索问题根目录.

Syn*_*hro 4

这是由于 PHP 5.6 中新的默认验证策略所致。没有在 php.ini 中设置;这是您为 fopen 包装器或流上下文提供的选项。尤其要看看这里的verify_peer选项。PHPMailer 允许您在方法期间设置这些参数smtpConnect(),但没有选项将选项传递到smtpSend()方法中,因此您需要子类化 PHPMailer 才能实现这一点。

您可能会发现替代方案更简单 -不要尝试使用自签名或无法验证的证书