centos下,使用getimagesize()时,报如下错误:
getimagesize(): SSL operation failed with code 1. OpenSSL Error messages:<br>error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
初步判断是php.ini里的openssl.cafile没有设置,打开php配置文件后却发现是有设置了的,目前设置值是:
openssl.cafile=/etc/pki/tls/certs/ca-bundle.crt
之后又怀疑是证书可能过期失效,就先对比自己的服务器这个文件的内容,发现大小不一致,就从自己服务器上复制内容粘贴过来,保存后重载php配置问题依然存在;
想起之前在Windows系统上也出现过类似的问题,当时配置了curl.cainfo就行,于是就从这个网站
:http://curl.haxx.se/ca/cacert.pem下载证书,并放到/usr/local/openssl/目录,修改配置
[curl]
curl.cainfo = /usr/local/openssl/cacert.pem
[openssl]
openssl.cafile=/usr/local/openssl/cacert.pem
网上出现这个问题的,搜出来的解决方式也都是这么操作的。然而保存后重载配置问题依旧。又把配置重新改回去。
最后在Stack Overflow上看到这篇文章:https://stackoverflow.com/questions/17084886/ssl-error-routinesssl3-get-server-certificatecertificate-verify-failed
发现Linux系统有更新本地证书的命令,不同系统命令不同,CentOS操作如下 :
安装ca证书工具
yum install ca-certificates -y
更新证书
update-ca-trust
问题解决。
粗暴解决办法:
getimagesize() 前面加“@” 忽略此错误即可。即改成:@getimagesize()
因为缺少证书,报这个错很正常。
还是简单暴力的直接加个@来的实在。