composer本地缓存packages.json(15分钟不过期)导致无法获取新版本,需用composer update --refresh(≥2.5)或手动清理repo下对应镜像缓存目录,并验证镜像元数据同步状态。

用中文镜像本身不能“获取最新包”,它只加速下载;真正卡住你拿到新版本的,是 Composer 本地复用 packages.json 缓存(15 分钟内不过期),根本不去镜像站拉新索引——哪怕阿里云镜像上已有 monolog/monolog v3.6.0,你本地还在按旧列表算。
composer update --refresh 是唯一精准刷新元数据的操作
这个参数从 Composer ≥ 2.5 开始引入,专为解决元数据滞后设计:
- 只丢弃
~/.composer/cache/repo/https---mirrors-aliyun-com-composer/packages.json和所有provider-*.json,不删 ZIP 包、不重建 lock 文件、不重装已安装包 - 强制从当前生效镜像源(比如
https://mirrors.aliyun.com/composer/)重新下载最新元数据 - 执行前必须确认 Composer 版本:运行
composer --version,若 ≤ 2.4,则该参数不存在,需手动删缓存 - 执行后立刻再跑
composer update vendor/package-name,新版本才能被识别出来
老版本 Composer(≤ 2.4)必须手动清理缓存目录
composer clear-cache 不解决问题——它清的是 dist 包和部分 JSON,但 packages.json 缓存仍被复用。正确做法是:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查缓存根目录:
composer config --global cache-dir - 进
repo/子目录,找匹配镜像 URL 的文件夹(如https---mirrors-aliyun-com-composer) - 删除它:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer - 之后再运行
composer update,才会触发全新元数据拉取
验证镜像是否真同步了你要的包
别信网页界面或 composer diag——它默认只测 packagist.org,完全不检查你配的镜像。有效验证方式是直接查镜像元数据接口:
- 先确认当前生效镜像:
composer config -g repos.packagist.url(注意是复数repos,单数repo在 Composer 2.2+ 已失效) - 查全量索引是否更新:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回HTTP/2 200且Last-Modified时间合理 - 查具体包是否存在:
curl -s https://mirrors.aliyun.com/composer/p2/vendor/package-name.json | jq -r '.packages."vendor/package-name" | keys[]' | sort | tail -3 - 对比官方源输出:
curl -s https://packagist.org/p2/vendor/package-name.json | jq -r '.packages."vendor/package-name" | keys[]' | sort | tail -3,版本不一致即为同步延迟
最常被忽略的是项目级 repositories 配置会静默屏蔽全局镜像——你在终端执行了 composer config -g repos.packagist.url https://mirrors.aliyun.com/composer/,但进项目一跑 composer require,日志里却出现 Downloading https://p...,说明配置被覆盖了。这类问题不排查配置层级,光刷缓存毫无意义。










