答案是镜像未生效:配置错误(键名/类型/URL格式不符)、缓存未清或项目级repositories覆盖全局设置,任一存在均导致Composer静默回退至packagist.org。

“Could not find package”不是包不存在,而是 Composer 根本没连上你配的镜像——配置写错、缓存没清、项目级 repositories 覆盖了全局设置,三者任一存在,就会安静 fallback 到 packagist.org。
验证镜像是否真生效:只看 composer config -g repo.packagist 输出
这条命令必须输出完整 JSON,例如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。如果返回空、null、Key not found 或仍是 https://packagist.org,说明配置根本没写进去。
- 键名必须是
repo.packagist(单数、小写、不能多 s) - 中间必须显式传入
composer作为 type 值,漏掉就静默失效 - URL 必须以
https://开头,且末尾带/;https://mirrors.aliyun.com/composer❌ 会拼成/composerpackages.json导致 404 - 必须加
-g,否则只改当前项目composer.json,换目录即失效
项目级 repositories 字段会彻底屏蔽全局镜像
只要 composer.json 里有 "repositories" 字段(哪怕只是 "repositories": [] 或 "repositories": {"packagist.org": false}),全局配置就完全不生效。
- 检查方法:
grep -A5 repositories composer.json - 临时清除:
composer config --unset repositories(注意不加-g) - 长期方案:进项目根目录,运行
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g),它会自动合并进composer.json的repositories对象中 - 若原
repositories是数组(如[]),需先手动改为{}再执行,否则报错
清缓存 + 删 vendor + 删 composer.lock 是硬性步骤
缓存里存着旧的 packages.json 元数据,哪怕镜像已配对,Composer 仍会优先读缓存、继续请求 packagist.org;composer.lock 里硬编码了 dist URL,不删它,Composer 就一直重试失败路径。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 必须执行:
composer clear-cache - Windows 用户还需手动删:
%LOCALAPPDATA%\Composer\cache - 删掉:
rm -rf vendor/ composer.lock - 再跑:
composer install -vvv,观察日志中所有Downloading行的域名是否含mirrors.aliyun.com
Composer 2.2+ 用户注意:键名已变更为 repositories.packagist.org
如果你用的是 Composer 2.2 或更高版本(composer --version 查看),repo.packagist 已被弃用,必须用新键名,且值必须是合法 JSON 字符串。
- 正确命令:
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}' - 必须用双引号包裹整个 JSON,单引号或漏引号都会静默失败
- 验证方式不变:
composer config -g repositories.packagist.org必须输出完整 JSON - 仍需清缓存、删
vendor和composer.lock,否则日志里看不到镜像域名
最容易被忽略的是:你以为配好了,其实 composer install -vvv 日志第一行下载地址还是 packagist.org —— 那就说明前面所有操作都白做了,得从验证配置开始重来。










