答案是cURL error 60因SSL证书验证失败导致,可通过配置CA证书、指定证书路径或临时关闭验证解决,推荐下载cacert.pem并配置php.ini中curl.cainfo以实现安全稳定的HTTPS请求。

ThinkPHP 报错“cURL error 60”通常是由于 cURL 请求 HTTPS 接口时无法验证 SSL 证书导致的。这个错误的完整提示一般是:
SSL certificate problem: unable to get local issuer certificate
这意味着 PHP 的 cURL 扩展找不到受信任的 CA(证书颁发机构)证书来验证目标服务器的 SSL 证书。以下是几种常见且有效的解决方法。
最安全的做法是让 cURL 使用正确的 CA 证书包进行验证。
立即学习“PHP免费学习笔记(深入)”;
• 前往 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 下载最新的 cacert.pem 文件D:\php\cacert.pem
/etc/ssl/certs/cacert.pem
curl.cainfo = "D:\php\cacert.pem"
curl.cainfo = "/etc/ssl/certs/cacert.pem"
这样全局的 cURL 请求都会使用可信的证书进行验证,安全性高。
如果你使用的是 ThinkPHP 自带的 Http 或 Swoole\Http\Client,可以在请求时指定 CA 证书路径:
示例代码:
$response = \think\facade\Http::get('https://api.example.com', [
    'verify' => '/path/to/cacert.pem'  // 指向你下载的 cacert.pem
]);
或者关闭严格验证(仅开发环境建议):
$response = \think\facade\Http::get('https://api.example.com', [
    'verify' => false
]);
如果只是测试或调试,可以临时跳过证书验证(有安全风险):
config('http.disallow_ssl_verify_requests', false); // ThinkPHP 6.x 中可设置
或在调用时直接关闭:
\think\facade\Http::send($url, ['verify' => false]);
⚠️ 注意:这会使请求容易受到中间人攻击,仅用于本地调试。
SSL 验证还依赖系统时间。如果服务器时间不准确(如相差几天),也可能导致证书被视为无效。
• Linux:运行date
ntpdate pool.ntp.org
基本上就这些。优先推荐第1种方式,从根本上解决问题,既安全又稳定。开发阶段可用第3种临时绕过,但上线前务必恢复验证。
以上就是thinkphp报错“cURL error 60”SSL证书问题怎么解决的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号