答案是Composer无法手动触发镜像源更新,需用composer update --refresh(≥2.5)强制丢弃本地缓存的packages.json和provider-*.json并重新下载元数据;老版本须手动删除对应repo缓存目录或临时设COMPOSER_CACHE_DIR=/dev/null。

Composer 本身无法手动触发镜像源更新——镜像同步是服务端行为,客户端没有“刷新按钮”。所谓“强制刷新”,本质是让 Composer 丢掉本地缓存的元数据,重新从你配置的镜像地址拉取最新 packages.json 和 provider-*.json。
为什么 composer update 总是看不到新版本?
不是网络慢,也不是命令错了,而是 Composer 默认复用本地缓存的元数据文件(packages.json),15 分钟内不过期。哪怕阿里云镜像站上已同步了 monolog/monolog 的 3.6.0 版本,你本地缓存里还是 3.5.0 的索引,composer update 就直接跳过网络请求,按旧列表算依赖。
- 现象:
composer update monolog/monolog显示 “Nothing to install or update”,但你在 https://www.php.cn/link/31bcaa3b65a96372618e75f612347515 能看到 3.6.0 - 确认是否真卡在缓存:运行
ls -l $(composer config --global cache-dir)/repo/https---mirrors.aliyun.com-composer/,看packages.json修改时间是否超过 15 分钟 - 别被
composer clear-cache欺骗:它会清 ZIP 包,但下次update仍会立刻重建并复用旧packages.json
composer update --refresh 是什么,怎么用?
这是 Composer ≥ 2.5 内置的精准解法:只清元数据缓存,不碰已下载的 ZIP 包,也不重装任何依赖。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先确认版本:
composer --version,输出必须是2.5.0或更高 - 确保镜像配置正确:
composer config -g repo.packagist.url必须输出类似https://mirrors.aliyun.com/composer/(注意末尾斜杠) - 执行:
composer update --refresh,它会删掉所有repo/下的packages.json和provider-*.json,然后从当前生效镜像源重新下载 - 立刻再跑:
composer update monolog/monolog,新版本就能被识别并安装
老版本 Composer(≤ 2.4)怎么办?
没有 --refresh 参数,只能手动清理对应镜像的元数据缓存目录。
- 查当前镜像缓存路径:
composer config --global cache-dir,通常为~/.composer/cache - 进
repo/子目录,找匹配你镜像 URL 的文件夹,比如:https---mirrors.aliyun.com-composer - 删整个文件夹:
rm -rf $(composer config --global cache-dir)/repo/https---mirrors.aliyun.com-composer - 或者临时绕过缓存:
COMPOSER_CACHE_DIR=/dev/null composer update monolog/monolog - 注意:别只删
packages.json单个文件,provider-*.json同样影响版本可见性
项目级 repositories 配置会彻底屏蔽全局镜像
哪怕你全局配好了阿里云镜像,只要项目 composer.json 里有 "repositories" 字段,Composer 就完全忽略 config -g repo.packagist,直接按你写的 URL 去拉——而很多人复制的模板里还留着已停用的 https://packagist.phpcomposer.com。
- 检查方式:
composer config --list | grep repositories.packagist.url,输出必须是你期望的镜像地址 - 快速验证:
composer config --unset repositories(不加-g),再试update;如果成功,说明就是项目配置覆盖了 - 修复建议:删掉项目
composer.json中整个"repositories"块,或重写为有效镜像地址 - 临时调试可加参数:
composer update --repository=https://mirrors.aliyun.com/composer/,不改配置也能走指定源
最易被忽略的一点:镜像 URL 末尾的斜杠 / 不是可选的。写成 https://mirrors.aliyun.com/composer(缺斜杠)会导致部分 Composer 版本静默 fallback 到官方源,且不报错——日志里也看不出异常,只能靠 composer install -vvv 抓真实请求 URL 来确认。

















