不清理缓存,镜像还原就等于没还原;根本原因是composer clear-cache默认不清理repo/下按镜像url哈希命名的元数据子目录(如https---mirrors.aliyun.com---composer/),这些目录存有旧包列表,update时直接复用而忽略新配置,必须手动删除对应缓存子目录并清除vendor/和composer.lock才能彻底生效。

不清理缓存,镜像还原就等于没还原。 Composer 切换回官方源后仍从阿里云、腾讯云等镜像拉包,根本原因不是配置没删干净,而是 composer clear-cache 默认跳过 repo/ 下按 URL 哈希命名的元数据目录(比如 https---mirrors.aliyun.com---composer/),这些目录里存着旧镜像的完整包列表和 provider 映射,composer update 会优先复用它们,完全绕过新配置。
为什么 composer config -g --unset repos.packagist 后还走镜像?
因为该命令只删配置,不碰缓存。Composer 加载依赖时的执行顺序是:先查本地缓存 → 若命中则直接解析 → 根本不读新配置里的源地址。你删了 repos.packagist,但 ~/.composer/cache/repo/https---mirrors.aliyun.com---composer/ 还在,它就继续当真源用。
- 配置只是“告诉 Composer 去哪找”,缓存才是“Composer 实际拿数据的地方”
- 即使你临时切回官方源,只要
https---packagist.org/目录下元数据陈旧,composer update依然可能解析出错版本(比如漏掉刚发布的 2.10.0) - 某些私有仓库或老项目还残留
repo.packagist(单数)字段,--unset repos.packagist不生效,但缓存照旧污染
只运行 composer clear-cache 为什么还不够?
它默认清 files/(ZIP 包)、vcs/(Git 克隆)、repo/(但跳过 URL 哈希子目录),而真正卡住你的是 repo/ 下那些按镜像域名生成的子目录——它们不会被自动清理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:必须手动
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com---composer/ - Windows:
rd /s /q "%APPDATA%\Composer\Cache\Repo\https---mirrors.aliyun.com---composer" - 若曾用过 Laravel China 镜像,还要顺手删
https---packagist.phpcomposer.com/ - 删完立刻验证:
composer require monolog/monolog --no-install -vvv,看日志中Downloading行是否出现https://repo.packagist.org
删完缓存,为什么 vendor 和 lock 文件也得动?
因为 vendor/composer/installed.json 和 composer.lock 是旧缓存+旧配置共同作用下的产物,它们硬编码了 dist URL、sha256 和 provider 来源。不清掉,composer install 会直接失败,composer update 可能重建错误依赖图。
-
composer.lock里记录的"url": "https://mirrors.aliyun.com/composer/dists/..."已失效,不删就报 404 -
installed.json里"source": {"url": "...mirrors..."}会让composer show显示错误来源信息 - 最稳妥做法:删掉
vendor/、composer.lock、vendor/composer/installed.json,再跑composer install
真正卡住人的从来不是“怎么删”,而是删哪、删多少、删完要不要连带处理项目文件——缓存路径里每个子目录职责不同,repo/ 存元数据,files/ 存 ZIP,vcs/ 存 Git clone,混着删或漏删一个,问题就会以不同形式反弹。










