本地环境cURL error 60求助:配置cacert.pem后仍报SSL证书错误
解决curl: (60) SSL certificate problem错误的方案
1. 确认php.ini配置是否生效
- 执行命令
php -i | findstr "Loaded Configuration File"(Windows)查看当前PHP加载的配置文件路径,确保你修改的是这个文件,而非备用的php.ini-development/php.ini-production。 - 修改配置后必须重启XAMPP的Apache服务,否则新配置不会生效。
2. 验证cacert.pem文件完整性
- 打开
C:\xampp\php\extras\ssl\cacert.pem,检查文件末尾是否存在-----END CERTIFICATE-----标记,且文件内容无乱码、截断。 - 用命令行直接测试证书有效性:
curl --cacert C:\xampp\php\extras\ssl\cacert.pem https://example.com,若仍报错,重新下载最新的根证书包替换现有文件。
3. 修正路径与权限问题
- 将php.ini中的路径改用正斜杠:
curl.cainfo="C:/xampp/php/extras/ssl/cacert.pem",避免Windows反斜杠的转义冲突。 - 右键cacert.pem文件→属性→安全,给IIS_IUSRS或Apache运行用户添加「读取」权限,防止进程无法读取证书文件。
4. 代码层面临时排查
- 在PHP代码中手动指定证书路径,测试是否能正常请求:
$ch = curl_init("https://example.com"); curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/php/extras/ssl/cacert.pem"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); if (curl_errno($ch)) { echo curl_error($ch); } curl_close($ch);
如果这段代码正常运行,说明php.ini配置未生效;若仍报错,继续排查证书文件或路径问题。
5. 导入证书到系统根存储
- 以管理员身份打开命令提示符,执行:
certutil -addstore -f "ROOT" C:\xampp\php\extras\ssl\cacert.pem
将证书导入Windows系统根证书库,解决部分环境依赖系统信任链的问题。
内容的提问来源于stack exchange,提问作者Anton Shupeniuk
相关产品推荐
相关产品推荐

