PHP中cURL返回错误码60通常与SSL证书验证有关。错误码60代表 "SSL certificate problem: unable to get local issuer certificate",意味着cURL无法验证远程服务器的SSL证书,可能是因为证书本身存在问题,或者是因为cURL的配置没有正确设置以识别有效的证书。
处理cURL错误码60的方法主要有以下几种:
-
关闭证书校验: 这是一种简单但不建议在生产环境中使用的方法,因为它会降低通信的安全性。如果确定可以忽略证书验证的风险,可以通过设置cURL选项来关闭证书校验。具体做法是在发送请求前,使用
curl_setopt
函数设置CURLOPT_SSL_VERIFYPEER
选项为false
。
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
-
正确配置证书文件: 更安全的做法是在PHP的配置文件php.ini中引用一个有效的证书文件(通常是cacert.pem)。需要找到或下载一个受信任的证书文件,然后在php.ini文件中添加或修改以下行:
curl.cainfo="path/to/your/cacert.pem"
请确保将 "path/to/your/cacert.pem"
替换为你实际证书文件的路径。这样,cURL就能正确验证远程服务器的SSL证书,从而避免错误码60的发生
-
使用命令行参数: 如果是在命令行中使用curl,可以通过添加
-k
或--insecure
参数来忽略证书验证,但这不推荐在生产环境中使用。 -
更新cacert.pem文件: 如果cacert.pem文件过时,可能需要下载最新的cacert.pem文件,并更新到PHP配置中。
-
使用操作系统的证书存储: 在某些系统中,cURL可能配置为使用操作系统的证书存储而不是使用cacert.pem文件。确保系统证书存储中有有效的证书。
在实际开发中,建议优先选择后者,即正确配置证书文件,以确保应用的安全和稳定。
标签:证书,错误码,60,pem,cacert,curl,SSL,cURL From: https://www.cnblogs.com/suducn/p/18245312