composer update --refresh是composer ≥ 2.5中唯一精准刷新元数据的方式,仅删除packages.json和provider-*.json并重拉最新索引,不删zip包、不改lock文件;执行前须确认镜像配置生效且未被项目级repositories覆盖。

composer update --refresh 是最直接的元数据刷新方式
Composer ≥ 2.5 版本中,composer update --refresh 是唯一能精准丢弃本地元数据缓存、强制从当前生效镜像源重拉 packages.json 和 provider-*.json 的命令。它不重新下载 ZIP 包,只刷新决定“有哪些包、哪些版本可用”的索引文件。
执行前必须确认:composer config -g repo.packagist 输出是你期望的镜像地址(如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"});若项目级 composer.json 含 "repositories" 字段,则需改用 composer config repo.packagist(不带 -g)验证,否则命令仍走官方源。
常见误操作:
- 运行
composer clear-cache后仍卡在旧版本——该命令几乎不影响元数据文件,只清 ZIP 和部分 provider 缓存 - 没加
--refresh直接跑composer update,Composer 默认复用 15 分钟内缓存的元数据,哪怕镜像站已更新也不会触发重拉 - 终端输出里看到
GET https://packagist.org/packages.json——说明配置未生效或被项目级repositories屏蔽
手动清理 repo 缓存目录要对准路径
Composer 把元数据缓存在 ~/.composer/cache/repo/ 下,子目录名由镜像 URL 转义生成,比如阿里云镜像对应 https---mirrors-aliyun-com-composer,腾讯云是 https---mirrors-cloud-tencent-com-composer。删错目录等于白忙活。
正确步骤:
- 先查真实缓存位置:
composer config --global cache-dir - 再进
repo子目录看实际路径:ls -d $(composer config --global cache-dir)/repo/https---* - 确认后删除对应目录:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer - Windows 用户路径类似:
%APPDATA%\Composer\cache\repo\https---mirrors-aliyun-com-composer
注意:Composer --refresh;但删完仍要配合 composer update 才会触发重拉,单独删目录不会自动发起请求。
验证镜像是否真同步,不能只看 packages.json
packages.json 的 updated 时间戳不可靠——它可能已更新,但具体包的 p2/vendor/package.json 或 provider-vendor~package.json 还没生成。真正影响安装的是后者。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
校验要点:
- 用
curl -I https://mirrors.aliyun.com/composer/packages.json看是否返回HTTP/2 200,且Last-Modified头距当前时间 ≤ 180 秒 - 对目标包,手动比对官网和镜像站的 provider 文件:
curl -s https://packagist.org/p2/laravel/framework.json | jq -r '.packages."laravel/framework" | keys[]' | sort和同命令换镜像 URL 的结果必须完全一致 - 如果镜像站返回
404或空 JSON,而官网已有该包新版本,说明 provider 分片尚未同步,此时换源比等更有效
别信 composer diag——它默认直连 https://packagist.org,和你配的镜像无关,报错只反映本地环境问题(如 curl 不可用、系统时间不准),不是镜像挂了。
项目级配置必须禁用 packagist.org 才生效
在 composer.json 里写 "repositories": {"packagist.org": {"type":"composer", "url":"https://mirrors.aliyun.com/composer/"}} 是无效的。Composer 2.2+ 会忽略这种对象写法,元数据请求仍硬编码走官方源。
必须用数组格式,并显式禁用默认源:
"repositories": [
{"packagist.org": false},
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
]
关键细节:
-
{"packagist.org": false}必须是独立对象,不能合并到下一项里 - 镜像 URL 末尾必须带
/,否则请求变成/composerpackages.json导致 404 - 该配置只对当前项目生效,需提交
composer.lock才能确保多机行为一致 - 若已有私有仓库,插在第二项之后,不能删掉第一项
全局配置和项目级混用时,项目级优先级更高,容易掩盖问题。日常开发建议统一用全局配置,CI 场景再用 --repository-url 临时覆盖。










