必须执行composer config -g repo.packagist composer https://repo.packagist.org强制指定官方源,而非仅--unset;因字段名错误、旧版fallback崩溃、项目级配置或环境变量覆盖、缓存未清均会导致--unset不生效。

直接执行 composer config -g repo.packagist composer https://packagist.org 就能强制走官方源,比删配置更可靠,尤其在 Composer 2.2–2.4 这些旧小版本里不会卡在 Could not parse version constraint 错误里。
为什么 composer config -g --unset repos.packagist 有时不生效
这个命令只是删 JSON 字段,不是“重置为默认”。实际失效常因为:
- 字段名写错:必须是
repos.packagist(复数),写成repo.packagist(单数)不会报错,但配置没被删 - 旧版 Composer(如 2.2–2.4)删掉后 fallback 逻辑可能崩溃,直接卡住或报错
- 项目级
composer.json里还有"repositories"块,它优先级高于全局配置,删全局等于白删 - 环境变量
COMPOSER_REPO_PACKAGIST仍存在,会彻底盖掉所有配置
怎么确认当前真正走的是官方源
不能只看命令有没有报错,得验证两件事:配置已生效、网络请求地址正确。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 查当前实际生效的源:
composer config repo.packagist(不加-g),输出应含https://repo.packagist.org,而不是mirrors.aliyun.com等镜像域名 - 看真实请求地址:
composer require monolog/monolog --no-install -vvv,滚动日志里找Downloading https://开头的行,URL 必须是https://repo.packagist.org - 检查缓存是否清空:
ls -la ~/.composer/cache/(Linux/macOS)或dir %APPDATA%\Composer\Cache\(Windows),目录应为空或只剩空子目录
三层配置覆盖关系必须理清
Composer 查源顺序是固定且严格的:环境变量 > 项目级配置 > 全局配置。哪怕你全局设对了,只要其中一层“盖住”了,就一定不生效。
- 查项目是否自定义源:
grep -A 5 '"repositories"' composer.json(Linux/macOS),或手动打开composer.json搜索repositories - 临时覆盖项目级设置:进项目目录后运行
composer config repo.packagist composer https://packagist.org - 查环境变量干扰:
env | grep COMPOSER_REPO(Linux/macOS)或echo %COMPOSER_REPO_PACKAGIST%(Windows),有就unset COMPOSER_REPO_PACKAGIST或对应清除
最常被忽略的一点:缓存不清,换源等于白换。哪怕配置全对、URL 正确,composer update 仍可能拉错包或报 Package not found——因为旧镜像的 packages.json 快照还躺在缓存里。

















