应清理三层配置残留(环境变量、项目级repositories、全局repos.packagist)、清缓存并验证真实请求路径;查真正生效源须用composer config repo.packagist.org,而非仅看-g输出,否则易被覆盖仍走镜像。

还原 Composer 镜像源不是“切回去就完事”,而是要清理三层配置残留 + 清缓存 + 验证真实请求路径,否则 composer update 仍会悄悄走阿里云或腾讯云。
查当前真正生效的镜像源
别只看全局配置,composer config -g repo.packagist 可能被项目级或环境变量覆盖。最准的方式是直接运行:
composer config repo.packagist.org
它会自动合并所有层级(环境变量 > 项目 composer.json 中的 repositories > 全局配置),输出真实生效的 URL。如果报错 Could not find repository 'packagist.org',说明没配任何镜像,正在直连官方源。
常见误判:
- 用
composer config -l | grep repo查不到repo.packagist.org—— 因为这个字段是嵌套结构,-l不显示 - 看到
{"type":"composer","url":"https://packagist.org"}就以为 OK —— 实际可能是项目里写了"packagist.org": false,等于关源不给补
删配置必须删对字段名和作用域
Composer 2.x 全局镜像配置字段名是 repos.packagist(复数、带 s),不是 repo.packagist(单数)——这两个字段完全独立,删错一个,另一个照常生效。
正确操作:
- 删全局镜像:运行
composer config -g --unset repos.packagist(注意是repos,不是repo) - 如果之前混用过旧写法,再补删一次:
composer config -g --unset repo.packagist - 删项目级镜像:
composer config --unset repositories(不加-g,且删的是整个repositories块,不是某个子字段) - 漏掉
-g→ 只删当前项目,不影响其他项目
删完后验证:composer config -g repos.packagist 应返回 Key "repos.packagist" does not exist 或空输出。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
缓存不清 = 白删配置
Composer 缓存里存着旧镜像下载的 packages.json 快照,即使配置删干净了,composer update 仍可能读缓存里的元数据,导致版本错乱、包找不到。
必须执行:
-
composer clear-cache(清元数据缓存) -
rm -rf vendor/ composer.lock(可选但推荐,尤其在 CI 或 Docker 构建中)
验证是否真走官方源:
composer require monolog/monolog --no-install -vvv 2>&1 | grep "GET https"- 看日志里出现的 URL 前缀:应为
https://repo.packagist.org,不是mirrors.aliyun.com或mirrors.cloud.tencent.com
环境变量和项目配置常被忽略
即使全局删干净了,composer install 还是走镜像?大概率是下面三者之一在起作用:
- 环境变量:
echo $COMPOSER_REPO_PACKAGIST(Linux/macOS)或echo %COMPOSER_REPO_PACKAGIST%(Windows),有输出就优先级最高 - 项目
composer.json里还留着"repositories"段,比如"packagist.org": false或完整镜像定义 - 某些脚手架(如老版 Laravel 安装器)生成的项目自带禁用默认源逻辑,删
repos.packagist没用,得手动编辑composer.json恢复或清空repositories
临时绕过项目配置的方法:composer config repo.packagist composer https://packagist.org(不加 -g),仅改当前项目,不影响其他。
最麻烦的情况是项目里写了 "packagist.org": false 却没给替代源——这时 Composer 会彻底找不到包,必须人工删掉整个 repositories 块或显式恢复 "packagist.org": true。










