必须导出、验证、清缓存三步闭环,漏一步仍会卡在Loading composer repositories或downloading;需用composer config -g命令导出repo.packagist(须为完整JSON)、prefer-dist(应为true)、parallel-downloads(推荐10),任一为空或非预期值即无效,且必须清缓存和vendor/、composer.lock才能生效。

Composer 加速设置不是“配完就快”,而是必须导出、验证、清缓存三步闭环,漏掉任意一步,composer install 仍会卡在 Loading composer repositories 或 downloading 阶段。
导出当前生效的加速配置
别信“我刚配过”,真正起作用的是 Composer 实际读取到的配置。用以下命令导出当前用户下所有影响下载行为的关键项:
-
composer config -g repo.packagist—— 必须输出完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} -
composer config -g prefer-dist—— 应为true,避免走 git clone -
composer config -g parallel-downloads—— Composer 2.2+ 推荐设为10;旧版查concurrent.http.max-parallel-downloads
如果任一命令输出为空、null 或仍是 https://packagist.org,说明配置没写进去或被覆盖。
为什么 composer config -g 常“看似成功实则无效”
这条命令静默失败的三大硬伤:
- 键名错:写成
repos.packagist(多一个s)→ 完全忽略,不报错也不生效 - 缺
composertype 参数:命令必须是composer config -g repo.packagist composer https://...,漏掉中间那个composer就 fallback 到默认源 - URL 少斜杠:
https://mirrors.aliyun.com/composer❌ → 404;必须是https://mirrors.aliyun.com/composer/✅
验证方式只有一种:执行后立刻再跑一遍 composer config -g repo.packagist,看输出是不是你预期的 JSON。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
项目级配置导出与覆盖优先级
全局配得再好,项目里有 repositories 字段也会盖掉它。检查是否被覆盖:
- 运行
composer config -l | grep -E "(repositories|repo\.packagist)",看实际加载的是哪一层 - 项目根目录下若有
composer.json含"repositories": {...},哪怕只有一行"packagist.org": false,也会禁用所有镜像 - 想安全追加镜像又不破坏已有私有源?进项目目录执行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不带-g),它会 merge 进repositories对象
注意:如果项目 composer.json 里 repositories 是数组格式([]),该命令会失败,需先手动改成对象 {}。
换源后必须清缓存和 lock 文件
缓存不清理,Composer 会继续用旧的 packages.json 元数据,镜像等于白配:
- 执行
composer clear-cache—— 清掉~/.composer/cache下所有内容 - 删掉项目里的
vendor/和composer.lock—— 否则旧 lock 中的 hash 可能和镜像元数据不匹配,导致安装失败或版本错乱 - 重跑
composer install --prefer-dist,观察日志是否出现GET https://mirrors.aliyun.com/composer/p2/...
最易被忽略的是:宝塔、CI、Docker 构建时运行命令的用户 ≠ 你当前终端的用户。root 下配的 -g 配置,www 或 runner 用户根本读不到 —— 此时导出的配置永远是空的。

















