最近在帮客户排查一个问题时,遇到一个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,再次测试,问题解决。