composer install卡在“loading composer repositories”是因镜像未生效,需确保config -g repo.packagist命令键名正确、type值为composer、url以/结尾,再清缓存、删vendor和composer.lock,并用-vvv和curl验证请求是否命中镜像域名。

composer install 卡在 “Loading composer repositories” 怎么办
这基本不是网络慢,而是镜像根本没生效——Composer 静默 fallback 到 https://packagist.org,不报错也不提醒。你看到的“卡住”,其实是它在等一个根本连不通的欧洲服务器响应。
必须同时满足三点,镜像才真正启用:
-
repo.packagist是唯一合法键名(repos.packagist、repositories.packagist全无效) - 命令中间必须显式写
composer作为 type 值:漏掉它,Composer 2.x 直接忽略整条配置 - URL 必须是 HTTPS 且末尾带
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼路径时变成/composerpackages.json,404)
验证是否写进去了:composer config -g repo.packagist。输出必须是完整 JSON,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};空、null 或仍是官方地址,说明压根没存成功。
为什么 composer config -g 看起来成功了却还是走 packagist.org
项目级 repositories 字段会彻底屏蔽全局配置,不是“优先级低”,是直接跳过。哪怕 composer.json 里只写了 "repositories": [],全局镜像也完全失效。
常见被覆盖场景:
- CI/CD 流水线(如 GitHub Actions)用的是独立用户或容器环境,
~/.composer/config.json根本不存在 - 宝塔面板默认以
www用户执行命令,你在终端用root配的全局配置,它读不到 - 旧项目残留了已下线的镜像源(比如
laravel-china.org),repositories字段还在但不可用
解决方法:进项目根目录,运行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加 -g)。它会把配置写进 composer.json 的 repositories 对象中,key 固定为 "packagist",随代码一起提交,行为可复现。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
换镜像后仍报 SSL 错误、404 或 JSON decode error
这不是镜像地址问题,是本地状态污染导致 Composer 拿着旧路径去新源上找不存在的东西。
必须清理三处:
-
composer clear-cache(清~/.composer/cache/下的元数据缓存) -
rm -rf vendor/ composer.lock(composer.lock里硬编码了旧 dist URL,不清它,Composer 就一直重试失败路径) -
rm -rf ~/.composer/cache/repo/https---packagist.org/(手动删掉旧源的packages.json和provider-*.json,否则它可能复用损坏的索引)
Windows 用户额外注意:%LOCALAPPDATA%\Composer\Cache 也要手动清空。清完再跑 composer install -vvv,第一行日志必须出现镜像域名,比如 Downloading https://mirrors.aliyun.com/composer/packages.json。
curl -I https://mirrors.aliyun.com/composer/packages.json 返回 HTML 页面怎么办
说明该镜像返回了人机验证页(如 Cloudflare 验证),不适合自动化场景。阿里云、清华、中科大镜像都稳定支持 CLI 自动请求,但某些小众或公益镜像会拦截非浏览器 UA。
临时验证方式:
- 用
curl -I -A "Mozilla/5.0" https://mirrors.aliyun.com/composer/packages.json测试是否绕过拦截 - 换用更稳定的源:
composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/ - 如果公司内网有代理或防火墙,先
curl -x http://your-proxy:port -I https://mirrors.tuna.tsinghua.edu.cn/composer/packages.json确认通路
最易被忽略的一点:PHP 的 openssl.cafile 和 curl.cainfo 如果指向了过期证书(比如停更于 2021 年的 curl-ca-bundle.crt),即使镜像地址全对,也会卡在 TLS 握手阶段。下载最新 cacert.pem(从 https://curl.se/ca/cacert.pem),并在 php.ini 中统一设置这两项。










