最近在部署phpmailer发信的时候,遇到这么一个错误:
OpenSSL Error messages: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
这个错误从字面意思上理解应该是OpenSSL的证书问题。于是在网络上搜寻一段时间后。找到了完美的解决方案,完美杜绝了任何报错。
解决方案
先查找找验证钥匙的地址
使用 php函数openssl_get_cert_locations(),也可以到php.ini文件中寻找到。
在ssh中输入如下命令 php -r "print_r(openssl_get_cert_locations());"
Array
(
[default_cert_file] =>/usr/local/openssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] =>/usr/local/openssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] =>/usr/local/openssl/private
[default_default_cert_area] =>/usr/local/openssl
[ini_cafile] =>
[ini_capath] =>
)
查找后的[default_cert_file] =>/usr/local/openssl/cert.pem,则为默认证书地址,我们替换成最新的证书即可解决问题。
下载并替换证书文件:
wget http://curl.haxx.se/ca/cacert.pem -O/usr/local/openssl/cert.pem
最后重启php即可解决问题:
service php-fpm restart
资源均来自第三方,谨慎下载,前往第三方网站下载