cURL error 60 根本原因是本地缺失可信CA证书,需启用openssl/curl扩展、配置绝对路径的cacert.pem(如curl.cainfo="/path/cacert.pem"),或仅开发时临时禁用SSL验证(不推荐生产环境)。

Laravel 7 启动 cURL 时出现报错,最常见的是 cURL error 60: SSL certificate problem: unable to get local issuer certificate,本质是 PHP 的 cURL 扩展在发起 HTTPS 请求时,无法验证远程服务器的 SSL 证书——因为本地缺少可信的根证书(CA bundle)或未正确指向它。
确认是否启用 openssl 和 curl 扩展
这是前提。打开终端执行:
php -m | grep -E "openssl|curl"若无输出,说明扩展未启用。需编辑 php.ini,取消以下两行前的分号:
extension=opensslextension=curl
保存后重启 Web 服务(如 Apache/Nginx)或 PHP-FPM 进程。
配置 CA 证书路径(推荐长期方案)
从官方源下载最新根证书文件:
- 访问 https://www.php.cn/link/cd6a3674478af373087f891eeb390100
- 将下载的
cacert.pem保存到一个固定路径,例如:
D:\phpstudy_pro\Extensions\cacert.pem(Windows)或
/etc/ssl/certs/cacert.pem(Linux/macOS)
然后在 php.ini 中添加或修改两行:
curl.cainfo="/你的完整路径/cacert.pem"openssl.cafile="/你的完整路径/cacert.pem"
⚠️ 路径必须是**绝对路径**,且注意正斜杠(Linux/macOS)或双反斜杠(Windows,如 D:\phpstudy\cacert.pem)。
改完务必重启 PHP 服务,再测试 Laravel 请求。
临时绕过 SSL 验证(仅限开发环境)
如果你只是本地调试、不涉及敏感数据,可在发起请求前关闭校验。例如使用 GuzzleHttp 时:
use GuzzleHttp\Client;$client = new Client([
'verify' => false,
]);
或原生 cURL:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
⚠️ 此方式绝不可用于生产环境,会带来中间人攻击风险,且部分新版 Guzzle 已弃用 verify => false,需配合 allow_self_signed => true 等组合使用。
检查 Laravel 环境与 Composer 包版本兼容性
Laravel 7 默认要求 Guzzle 6.5+ 和 PHP 7.2.5+。运行以下命令确认:
composer show guzzlehttp/guzzle若版本过低(如 6.2),执行:
composer require guzzlehttp/guzzle:^6.5同时确保 .env 中没有错误配置代理或自定义 cURL 超时参数干扰连接。


















