必须换国内镜像源,否则composer install几乎必然卡在Downloading;镜像配置需同时满足键名repo.packagist、显式type值composer、URL以/结尾三条件,缺一即静默回退官方源,且必须执行composer clear-cache并验证config输出为完整JSON。

必须换国内镜像源,否则 composer install 卡在 Downloading 是大概率事件,不是“可能慢”,而是几乎必然卡住。
镜像配置命令为什么总不生效
这条命令极易静默失败,执行完看似没报错,实际完全没写进配置。常见原因有三个:
-
repo.packagist写成repos.packagist(多一个s)——Composer 直接忽略,fallback 回https://packagist.org - 漏掉中间的
composertype 参数:composer config -g repo.packagist https://mirrors.aliyun.com/composer/❌,正确写法是composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/✅ - URL 末尾缺
/:https://mirrors.aliyun.com/composer会拼出错误路径,返回 404;必须是https://mirrors.aliyun.com/composer/
验证是否生效:运行 composer config -g repo.packagist,输出必须是完整 JSON 对象,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null 或仍含 packagist.org,说明根本没写进去。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
换源后还卡在 Downloading 的真正原因
最常被跳过的一步:composer clear-cache 没执行。缓存里还存着旧源的 packages.json 和元数据,Composer 优先读缓存,哪怕配置已改,它仍试图从旧地址拉校验信息,结果卡在 DNS 或 TLS 握手。
- 执行
composer clear-cache -v看实际删了什么,确认清理动作真实发生 - 若项目已有
vendor/和composer.lock,建议一并删掉再跑composer install,避免残留干扰 - 验证是否真走镜像:运行
composer show laravel/framework -vvv 2>&1 | grep "Downloading",日志里必须出现mirrors.aliyun.com或对应镜像域名
并发与超时参数怎么设才不白配
http-max-concurrent-downloads 是 Composer 2.2+ 唯一认的并发参数,parallel-downloads 已被弃用。但设高了反而容易翻车:
- 推荐值为
8–10:composer config -g http-max-concurrent-downloads 10 - 必须同步加大超时:
composer config -g http.timeout 300和composer config -g process-timeout 3600 -
http-max-concurrent-downloads只对composer install有效,对composer update几乎无用——依赖图计算本身是串行的 - 设成
20容易触发本地文件竞争或镜像站限流,尤其在 CI 容器中
复杂点在于:镜像配置、缓存清理、并发参数三者必须同时到位,缺一不可;而最容易被忽略的是缓存清理这一步——它不报错、不提示、不阻断,只默默拖慢你每一次 install。

















