卡在loading composer repositories是因tls握手失败导致请求静默丢弃,必须严格配置镜像源:键名repo.packagist、type值composer、url以/结尾的https地址,缺一不可,且需清缓存并验证日志确认真实请求域名。

卡在 Loading composer repositories 不是 Composer 坏了,也不是你项目写错了——是请求根本没发出去,或发出去后被静默丢弃。必须换镜像源,且配置必须严格满足三个硬性条件,否则等于没配。
为什么 Loading composer repositories 会卡住不动
这个阶段 Composer 正在 HTTPS 请求 packages.json 元数据,不是下载 ZIP 包,更不涉及依赖解析。packagist.org 在国内无法完成 TLS 握手,表现为:长时间无响应(超 5 分钟)、终端停住、不报错、也不 fallback。常见现象包括:
cURL error 7: Failed to connect to packagist.org port 443Could not resolve host: packagist.org- 日志里只显示
Loading composer repositories...后彻底静默
这不是 DNS 慢、不是代理没设好、也不是服务器负载高——是网络出口被阻断,TLS 层握手失败。
composer config -g repo.packagist 必须写对三要素
这条命令写错一个字符,配置就完全无效,且不报错,后续所有命令仍走默认源。务必满足:
- 键名必须是
repo.packagist(不是repos.packagist,多一个s就失效) - 第二个参数必须是
composer(这是 type 字段值,不能省略或写成https等) - URL 必须用 HTTPS 且末尾带斜杠:
https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(部分版本拼接出错,返回 404)
验证是否生效:运行 composer config -g repo.packagist,输出应为类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的 JSON 对象。空、null 或报错 = 没写对。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级 repositories 会无条件覆盖全局配置
只要项目根目录 composer.json 里有 repositories 字段,它就会屏蔽掉你全局配的阿里云/清华镜像——这是 Composer 的硬编码优先级:项目 > 用户 > 全局。
- 常见陷阱:团队模板自带
"repositories": [{"type": "composer", "url": "https://packagist.org"}],一拉代码就失效 - 验证方式:运行
composer config repo.packagist(不加-g),若输出为空或报错,说明项目级配置已接管 - 安全追加而非覆盖:用
composer config repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(无-g),它会自动 merge 到repositories数组中,不删已有私有源 - 若需禁用官方源 fallback,必须在
composer.json根节点显式写"packagist.org": false,不能塞进repositories数组里
换源后仍卡住?清缓存 + 验证真实请求域名
换源后不执行 composer clear-cache,旧缓存仍会尝试访问 packagist.org,日志里照样出现 404 或 TLS timeout。正确操作顺序是:
- 先运行
composer clear-cache - 删掉项目下的
vendor/和composer.lock - 再执行
composer install -vvv
盯住第一行日志:必须出现 Downloading https://mirrors.aliyun.com/composer/packages.json 才算真正走镜像。手动 curl -I https://mirrors.aliyun.com/composer/packages.json 返回 200 OK 才算通;返回 301 或超时说明镜像地址写错或网络策略拦截。
最容易被忽略的是:缓存清理不彻底,或项目级 repositories 配置残留,导致你以为切了源,其实请求还在往欧洲发。










