composer无“安全连接缓存”,ssl报错源于系统ca证书、php curl配置或代理设置,非缓存所致;clear-cache无效,需检查openssl_get_cert_locations()、repo源地址及http(s)_proxy环境变量。

Composer 没有“安全连接缓存”这个独立概念,所谓“SSL/TLS 缓存”问题通常指向证书验证失败、HTTPS 元数据拉取卡住或代理配置残留,不是靠清缓存能解决的。
为什么 composer clear-cache 对 HTTPS 报错无效
执行 composer clear-cache 后仍遇到 SSL certificate problem、Connection refused 或 Peer's Certificate issuer is not recognized,说明问题不在 ~/.composer/cache/ 目录里。Composer 本身不缓存 TLS 握手状态、证书链或 OpenSSL 会话;它依赖系统级的 CA 证书库和 PHP 的 cURL/openssl 扩展行为。
- 报错来自 PHP 的 cURL(如
curl_setopt(): SSL: certificate verification failed),不是 Composer 自己存的“连接缓存” -
clear-cache只删files/、repo/、vcs/,不碰 OpenSSL 配置、CA 证书路径或代理设置 - 如果你用的是公司内部镜像或自建 Packagist,问题更大概率出在镜像服务端证书过期,而非本地缓存
真正要检查的三个地方
遇到 HTTPS 相关失败,优先排查以下位置,而不是反复跑 composer clear-cache:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
php -r "print_r(openssl_get_cert_locations());"—— 看 PHP 实际加载的 CA 证书路径(常见为/etc/ssl/certs/ca-certificates.crt或/usr/lib/ssl/cert.pem) -
composer config --global repo.packagist.org.url—— 确认是否被改成 HTTP 或非标准 HTTPS 地址(比如少了s或用了自签名域名) -
env | grep -i proxy—— 检查HTTP_PROXY/HTTPS_PROXY是否设错,尤其 Windows 用户常因 PowerShell 和 CMD 环境变量不一致导致代理泄漏
需要手动干预的典型场景
以下情况必须改配置或重装证书,clear-cache 完全无用:
- 升级了 OpenSSL 或 PHP 后报证书错误 → 重新生成 CA bundle:
curl -sS https://curl.se/ca/cacert.pem -o /usr/lib/ssl/cert.pem(路径按openssl_get_cert_locations()输出调整) - 使用 WSL2 且宿主机开了代理 → 在 WSL 里设
export HTTPS_PROXY=http://host.docker.internal:8888(注意是http://,不是https://) - CI/CD 中 Docker 使用
alpine镜像 → Alpine 默认没装 CA 包,需加RUN apk add --no-cache ca-certificates - 公司强制中间人代理(MITM)→ 必须把企业根证书导出为 PEM,再通过
composer config --global cafile /path/to/company-root.crt告诉 Composer 信任它
唯一和“连接”沾边的缓存项:repo 元数据里的过期 HTTPS 响应
虽然不算“安全连接缓存”,但 ~/.composer/cache/repo/https---packagist.org/ 下的 packages.json 如果长期未更新,可能含已失效的 HTTPS 包源地址(比如某个包从 GitHub Pages 切到 GitLab,而旧元数据还指向 404 的 HTTPS URL)。这时要清的不是整个缓存,而是精准删掉该目录:rm -rf $(composer config --global cache-dir)/repo/https---packagist.org/。删完后首次 composer update 会强制重拉最新索引,暴露真实网络问题,而不是复用一个“看似成功实则不可达”的旧记录。
最容易被忽略的是:你以为在修 Composer 的缓存,其实是在调 PHP 的 OpenSSL、系统的 CA、或者公司网络策略——三者任何一个出问题,clear-cache 都只是在原地打转。










