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