最近遇到一个500错误,打开PHP Debug模式,发现详细报错内容如下:
AWS HTTP error: cURL error 60: SSL certificate problem: certificate has expired
,一看这个提示以为是目标地址SSL证书过期了,但反复确认目标SSL证书正常,并且其它设备均可请求,但是宝塔的PHP环境无法请求目标URL,尝试更换PHP版本依然如此。
解决办法
进入服务器终端,执行下面的命令下载根证书:
#下载根证书
wget --no-check-certificate https://curl.haxx.se/ca/cacert.pem
在宝塔后台找到你对应的PHP版本 - 设置 - 配置文件.
搜索下面2个关键词:curl.cainfo
和 openssl.cafile
这2参数的路径修改为上面cacert.pem
证书的路径,比如:
curl.cainfo = /xxx/cacert.pem
openssl.cafile=/xxx/cacert.pem
可以将原来的先注释掉,然后替换两个证书路径
然后重启下PHP,再次测试,问题解决。