curl error 60本质是php找不到可信ca证书,需通过openssl_get_cert_locations确认default_cert_file路径有效性,并配置curl.cainfo与openssl.cafile指向最新cacert.pem;而checksum verification failed源于composer.lock中dist.sha256过期,必须同步删除vendor和composer.lock后重装。

HTTPS协议降级本身不会触发包完整性校验异常——The checksum verification failed 和 cURL error 60 是两类完全独立的问题,混在一起排查只会浪费时间。前者是 lock 文件哈希过期,后者是 PHP 找不到可信 CA 证书。必须先区分报错原文,再走对应路径。
怎么一眼识别是 checksum 还是 SSL 错误
看终端第一行错误关键词:
-
The checksum verification failed或Hash mismatch→ 锁文件校验失败,和 HTTPS 无关 -
cURL error 60、SSL certificate problem、unable to get local issuer certificate→ PHP 证书链失效,和 lock 文件无关 -
Connection refused、timeout、Could not resolve host→ 网络连通性问题,优先查镜像源是否生效
别被“HTTPS”字眼误导:Composer 下载 zip 包走的是 HTTP/HTTPS 协议,但校验逻辑只比对 composer.lock 里的 dist.sha256 和本地文件实际哈希,不涉及 TLS 握手。
checksum verification failed 必须同步删 vendor 和 composer.lock
这个错误 95% 是因为 lock 文件里存着旧版包的哈希值,而你拉下来的是新版本(作者重推 tag、镜像同步延迟、私有包更新后未重生成 lock)。仅清缓存或只删 vendor 没用,因为 composer install 仍会读 lock 文件去校验。
- Linux/macOS:执行
rm -rf vendor composer.lock && composer install - Windows CMD:执行
rd /s /q vendor & del composer.lock & composer install - 删之前建议备份:
copy composer.lock composer.lock.bak - 切回官方源再重装更稳妥:
composer config -g --unset repos.packagist && composer clear-cache
注意:composer.lock 是项目依赖的唯一真相源,它不随镜像切换自动更新。换镜像 ≠ 更新哈希,必须重建 lock。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
cURL error 60 的根因永远在 PHP 配置,不在 Composer
这个错误不是 Composer 报的,是 PHP cURL 扩展在发起 HTTPS 请求时,发现 curl.cainfo 或 openssl.cafile 指向的证书文件不存在、为空、或格式非法。Composer 只是调用了它。
- 先确认路径:
php -r "print_r(openssl_get_cert_locations());",盯住default_cert_file和ini_cafile - 路径存在但文件为空或损坏?直接下载最新
cacert.pem(地址:Mozilla 官方维护),保存为绝对路径 - 改
php.ini(CLI 模式下生效的那个):curl.cainfo = "/path/to/cacert.pem"和openssl.cafile = "/path/to/cacert.pem" - 改完必须关掉当前终端、新开一个,再运行
php -r "var_dump(file_get_contents(ini_get('curl.cainfo')) !== false);"验证
别用 composer config --global cafile,它只影响 Composer 自带的 HTTP 客户端,而绝大多数 SSL 报错发生在底层 cURL。
镜像源配置失效常被误判为证书或校验问题
很多人看到 Connection refused 或卡在 downloading packages.json 就急着修证书或删 lock,其实只是镜像根本没生效。
- 查全局镜像:
composer config -g repos.packagist,输出必须是{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 查项目级覆盖:
composer config repositories,若出现"type": "vcs"或自定义 URL,镜像会被绕过 - 手动测通断:
curl -I https://mirrors.aliyun.com/composer/packages.json,要秒回HTTP/2 200 - 企业内网常见 TLS 握手卡死,可临时关 SSL 验证测试:
composer config -g secure-http false(完事后务必恢复)
真正容易被忽略的点:Windows 用户删 composer.lock 容易漏掉 del 命令;macOS Homebrew PHP 默认不带 CA 包,openssl.cafile 路径存在但文件为空;Docker Alpine 镜像压根没装 ca-certificates 包——这些都不是“换个镜像”能解决的。










