由于是从centos7换到ubuntu22,系统环境用起来多少还是有点问题的,既然出现了就解决它
原因还是在于之前的openssl问题 Ubuntu 22.04 源码编译安装 PHP7.4 使用OpenSSL1.1.1版本
网站整体打包搬家后,PHP版本和openssl版本问题已经解决了,过了几天才发现还有问题,就是我博客评论通知插件不能发送邮件通知了
在原来的centos7上面一直都是好的,我又检查了下php的openssl和socket扩展和版本,也都没问题,我看插件里面使用sokcet和curl两种方式通过异步发送邮件,默认是socket方式,一直提示SOCKET错误,我把socket方式禁用下,只用curl方式就可以正常发送评论通知
CommentToMail v2.0.1插件,发送记录的日志报错
开始发送请求:https://me.jinchuang.org/action/comment-to-mail?send=wv8Awed
SOCKET错误,:
PHP日志中的警告信息
PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
我原本使用的腾讯企业邮箱,插件界面邮件测试是可以发送成功的(估计没用插件里面写的socket方法),但是评论通知发送邮件这个就一直失败。天真的以为是使用腾讯企业邮箱问题,于是更换了qq邮箱、阿里云企业邮箱测试都一样发送失败
在github上找到了相关的内容 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure,于是就测试验证下openssl 和smtp服务器的连接加密认证
使用openssl命令测试证书命令:echo QUIT | openssl s_client -connect smtp.exmail.qq.com:465
发现问题了:Verify return code: 20 (unable to get local issuer certificate) 无法获取本地颁发者证书
也就是我服务器上,验证不了远端的证书信息,然后就失败了,根据报错代码找到了文章:centso7 openssl 报错Verify return code: 20 (unable to get local issuer certificate),是因为我安装的openssl版本找不到本机的证书目录导致的
解决方法:一条软链接命令,把系统的证书目录链接到我安装的openssl目录下(也就是php使用的openssl版本)
ln -s /etc/ssl/certs/ /opt/openssl/
评论测试,邮件也正常发送了
文章链接地址:https://me.jinchuang.org/archives/1419.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处
评论测试
回复测试