应先区分404类型:元数据404(.json路径)多因镜像同步延迟,可执行composer update --refresh;dist 404(.zip/.tar.gz路径)则需强制切源--repository-url=https://packagist.org重试,且clear-cache对此无效。

Composer install遇到404时,到底该删缓存还是切源
404 不代表包不存在,只说明当前源找不到对应元数据或归档文件。它可能是镜像同步延迟、dist URL 失效、或项目级 repositories 配置屏蔽了 fallback 机制。
- 先确认是元数据 404(如
packages.json或provider-*.json)还是 dist 404(如https://mirrors.xxx.com/dists/xxx.zip):前者看日志里下载的是.json路径,后者是.zip或.tar.gz - 元数据 404:大概率是镜像未同步,执行
composer update --refresh(≥2.5)或手动清掉~/.composer/cache/repo/https---mirrors-aliyun-com-composer/ - dist 404:说明镜像保留了旧元数据但删了归档,此时
--refresh无效,需加--repository-url=https://packagist.org强制走官方源重试 - 注意:
composer clear-cache只清files/和部分repo/,不碰核心元数据缓存目录,别指望它解决“看不到新版”问题
503响应意味着镜像正在同步,不是你网络有问题
503 是镜像服务主动返回的“我暂时不提供服务”,常见于阿里云、华为云等镜像站每 5–15 分钟一次的轮询同步窗口期。它和你的本地网络、DNS、代理完全无关。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 日志中看到
Downloading https://mirrors.huaweicloud.com/... 503后自动 fallback 到packagist.org—— 这是 Composer 2.2+ 的正常容错行为,不是配置错误 - 若 fallback 成功,不用干预;若 fallback 也失败,再查是否全局
"packagist.org": false被设为false,关掉了兜底逻辑 - 镜像页底部显示“最后更新时间”比当前晚超 1 小时,基本可判定是同步卡顿,不是源站故障
304状态码只影响元数据缓存,和包文件下载无关
Composer 根本不用 304 控制 zip/tar 包的缓存。你看到的 304 全部发生在元数据请求阶段(packages.json、provider-*.json),仅用于判断是否需要更新本地索引。
- 304 出现时,Composer 会复用已有的元数据缓存,跳过重新下载,但不会影响 dist 文件的命中逻辑
- 包文件是否重下,只取决于本地缓存路径是否存在 +
dist.shasum校验是否通过,和 HTTP 响应头完全无关 - 误以为“304 没生效所以包被重复下载”是典型误解——哪怕元数据请求返回 200,只要
~/.composer/cache/files/...下有校验通过的 zip,就绝不会发起新下载
200但装错版本?检查是否被项目级repositories劫持
即使所有请求都返回 200,你也可能装到旧版包。根本原因往往是项目根目录 composer.json 里写了 "repositories" 字段,导致 Composer 彻底忽略全局镜像配置和 fallback 机制。
- 运行
composer config --list | grep repositories,如果输出包含项目路径下的repositories,那就坐实了劫持 - 哪怕你只写了
{"type": "composer", "url": "https://packagist.org/"},也会禁用所有镜像和自动降级 - 临时验证:删掉项目
composer.json中的repositories字段,再跑composer install -vvv,观察日志里请求的 URL 是否变成你配的镜像地址 - 长期方案:改用
composer config --global repo.packagist composer https://mirrors.aliyun.com/composer/,并确保项目composer.json不含repositories
repositories 配置对整个依赖解析流程的绝对控制权——它不报错、不警告,只是安静地绕过你精心配置的所有镜像和 fallback 规则。

















