答案是换源不生效主因是配置写错(如repo.packagist拼错、缺type值、url末尾无/)、未执行composer clear-cache、或被项目级repositories字段覆盖;卡在downloading说明镜像未走通,卡在resolving dependencies则与镜像无关,属本地sat求解器问题。

换源不生效、composer install 还卡在 Downloading...,基本不是网络问题,而是镜像根本没走通——配置写错、缓存没清、项目级覆盖这三样只要漏一个,加速就等于白做。
为什么 composer config -g repo.packagist 总是不生效
这条命令静默失败率极高,错一个字符就回退到 https://packagist.org,还不报错:
-
repo.packagist不能写成repos.packagist(多一个s就彻底无效) - 中间的
composer是type值,不是可选参数,也不能省略或替换成其他字符串 -
url必须是 HTTPS 且末尾带/:比如https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(少斜杠会拼出/p2//类路径,直接 404) - 必须加
-g,否则只改当前目录下的composer.json,换个项目就失效
验证是否真写进去了:composer config -g repo.packagist 输出必须是完整 JSON,形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、报 Key does not exist,说明压根没写成功。
composer install 还卡在 Resolving dependencies?镜像管不了这事
镜像只加速下载环节,不加速依赖解析。这个阶段卡住,和网络无关,典型原因有:
-
composer.json里写了太宽的 PHP 版本约束,比如"php": "^7.4 || ^8.0 || ^8.1 || ^8.2",求解器暴力穷举组合 - 存在
"minimum-stability": "dev",强制拉取不稳定分支,候选版本数爆炸 -
composer.lock被删或未提交,install实际退化为update,重新算图 - 项目
composer.json的repositories字段指向了已下线私有源,Composer 逐个超时才 fallback
快速排查:composer config --list | grep repositories 看实际生效的是哪个源;再跑 composer validate --strict 确认 lock 文件合法。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
怎么确认国内镜像真的在用
别信感觉,得看日志和输出:
- 运行
composer clear-cache—— 否则 Composer 优先读本地缓存的海外索引,根本不发请求 - 执行
composer install -vvv或composer update -vvv,观察日志里出现的 URL:如果还有https://packagist.org/packages.json,说明镜像没生效 - 检查项目级
composer.json是否含repositories字段:它会覆盖全局配置,哪怕只写了个空对象"repositories": {}也会屏蔽全局镜像 - 确认
composer.json里没写"prefer-source": true,它会覆盖全局--prefer-dist,导致 fallback 到慢速 git clone
特别注意:某些包硬编码 GitHub URL(比如 "dist": {"url": "https://github.com/xxx/yyy/archive/"} ),这类不会走镜像,会撞上 GitHub Rate Limit;报错含 GithubRateLimitException 就是它。
parallel-downloads 设多少才真起作用
这是 Composer 2.2+ 原生机制,但默认值 3 基本等于没开:
- 推荐设为
8:composer config -g parallel-downloads 8 - 别盲目冲到
20:企业网络或低配 CI 容易触发file_put_contents(): failed to open stream(临时文件竞争),降到6–8更稳 - 该参数只对
composer install有效,composer update仍需串行算依赖图 - 依赖镜像支持 HTTP/2 多路复用;阿里云、清华、腾讯、华为镜像都支持,但私有源若不支持,设高了也白搭
运行 composer --version 确认是 2.2+;若是 1.x,先 composer self-update。










