composer update看不到新版本是因为默认复用15分钟内不过期的本地packages.json缓存,不发起网络请求;需用composer update --refresh(≥2.5)强制刷新元数据,或手动删除对应repo缓存目录。

composer update 看不到新版本,先确认是不是缓存拦住了请求
Composer 默认复用 ~/.composer/cache/repo/https---mirrors-aliyun-com-composer/packages.json,15 分钟内不过期,哪怕镜像站已更新,它也不发网络请求。现象是 Packagist 上已显示 monolog/monolog v3.6.0,但执行 composer update monolog/monolog 却返回 “Nothing to install or update”。这不是镜像没同步,是你本地根本没去查。
-
composer clear-cache无效:它删 ZIP 包和部分 provider 缓存,但packages.json会立刻重建并复用旧内容 - 真正起作用的是丢弃元数据缓存,不是清整个缓存目录
- 验证方式:运行
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回HTTP/2 200;再比对响应头Last-Modified和 Packagist 官网同包页面最后更新时间
composer update --refresh 是什么,为什么必须用它
composer update --refresh 是 Composer ≥ 2.5 提供的精准解法,它只丢弃 packages.json 和 provider-*.json,强制从当前生效镜像源重拉最新元数据,不删 ZIP 包、不重建 lock 文件、不重装依赖。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行前务必确认:
composer config -g repo.packagist输出是你配置的镜像地址(如https://mirrors.aliyun.com/composer/),末尾斜杠不能少 - 若项目根目录
composer.json中存在"repositories"字段,它会完全屏蔽全局配置,--refresh也会去错地方拉——先用composer config repo.packagist(不带-g)检查是否被覆盖 - 老版本 Composer(≤ 2.4)不支持该参数,只能手动清理:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors-aliyun-com-composer
镜像本身不同步?直接查它的 JSON 接口最可靠
别信网页界面或 composer diag——它默认只测 packagist.org,完全不检查你配的镜像。验证同步状态必须直连镜像元数据接口:
- 查全量索引是否更新:
curl -I https://mirrors.aliyun.com/composer/packages.json,HTTP 状态码必须是200 - 查具体包是否存在:
curl -s https://mirrors.aliyun.com/composer/p2/monolog/monolog.json | jq -r '.packages."monolog/monolog" | keys[]' | sort | tail -3 - 对比官方源输出:
curl -s https://packagist.org/p2/monolog/monolog.json | jq -r '.packages."monolog/monolog" | keys[]' | sort | tail -3,版本不一致即为同步延迟 - 注意:某些镜像(如
https://packagist.phpcomposer.com)已停服多年,配置后会导致404 Not Found
项目级 repositories 配置会静默屏蔽全局镜像
这是最常被忽略的失效原因。你在终端执行了 composer config -g repo.packagist https://mirrors.aliyun.com/composer/,但进项目一跑 composer require,日志里却出现 Downloading https://api.packagist.org/...——根源就在项目 composer.json 的 "repositories" 字段。
- 只要存在该字段,Composer 就彻底忽略全局设置,且不校验是否含
"packagist.org": false - 快速确认:
composer config --list | grep repositories.packagist.url,如果为空,说明被项目级配置覆盖 - 安全写法:删掉
composer.json中整个"repositories": []块;或改写为显式禁用官方源:{"repositories": [{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}],"packagist.org": false} - 注意:
repos.packagist(复数)在 Composer 2.2+ 中已失效,不报错但静默忽略
composer config -g repo.packagist 确认输出正确,再 composer update --refresh 强制拉元数据,最后用 composer show -vvv | grep Downloading 看真实请求域名。中间任何一步跳过,都可能白忙活。










