clear-cache后仍走镜像源,是因为该命令只清除本地缓存文件,不修改任何镜像配置;全局(composer config -g repo.packagist)或项目级(composer.json中repositories字段)配置依然生效,且优先级高于缓存状态。

为什么 clear-cache 后 composer install 还走镜像源?
不是缓存没清干净,而是镜像配置本身还在生效——composer clear-cache 只删本地文件,不改任何配置。如果你之前用 composer config -g repo.packagist 设过阿里云或腾讯云镜像,哪怕缓存全空,Composer 仍会按配置去请求那个镜像地址。
更隐蔽的情况是:项目级 composer.json 里写了 "repositories",它优先级高于全局配置,clear-cache 完全不影响它。
- 先确认当前实际生效的源:
composer config --list | grep -i repo(Linux/macOS)或逐行看composer config --list输出中带repo.的项 - 检查项目根目录下
composer.json是否含"repositories"字段(哪怕只有一行注释也建议打开看看) - 检查环境变量:
echo $COMPOSER_REPO_PACKAGIST(Linux/macOS)或echo %COMPOSER_REPO_PACKAGIST%(Windows),非空即覆盖
如何安全移除失效镜像而不留残留?
“失效”通常指镜像域名已不可达、证书过期、或返回 404/503,但 Composer 不报错,只是卡在 Reading packages.json from cache 或反复重试 HTTP 请求。这时不能只清缓存,得把配置源头干掉。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 删全局镜像(注意键名是
repos.packagist,不是repo.packagist):composer config -g --unset repos.packagist - 删项目级镜像:打开项目
composer.json,删掉整个"repositories": [...]块,保存后运行composer update --lock强制重生成锁文件 - 清空环境变量(临时):
unset COMPOSER_REPO_PACKAGIST(Linux/macOS)或set COMPOSER_REPO_PACKAGIST=(Windows CMD) - 最后执行:
composer clear-cache—— 这步必须做,否则旧镜像的packages.json快照可能还在~/.composer/cache/repo/下被复用
验证是否真的切回 packagist.org?
别信 composer config -g repo.packagist 的输出,它只显示“你设过什么”,不代表“现在走什么”。真实请求路径才是唯一依据。
- 最简验证:
composer diagnose -v,末尾出现Checking https://packagist.org/packages.json才算成功 - 抓包级验证:
composer install -vvv 2>&1 | grep -E "GET https|Downloading"(Linux/macOS),看到 URL 是packagist.org而非镜像域名 - Windows 用户可用:
composer install -vvv > log.txt 2>&1,再用记事本搜packagist.org - 如果仍看到镜像域名,说明某层配置漏了,重点复查
composer.json和环境变量
vcs 缓存和 metadata 残留常被忽略
composer clear-cache 默认不清理 vcs/ 目录,而 Git 克隆缓存(如 Laravel、Symfony 的完整仓库)动辄几百 MB,且里面存着旧镜像源的克隆记录。更关键的是:~/.composer/cache/repo/https---mirrors-aliyun-com/ 这类目录不会被自动删除,即使你已经 unset 了镜像配置——Composer 不会主动清理废弃的子目录。
- 手动删掉所有镜像相关的 repo 子目录:
rm -rf ~/.composer/cache/repo/https---mirrors-aliyun-com/*(Linux/macOS) - 清 vcs 缓存(尤其 CI 环境):
rm -rf ~/.composer/cache/vcs/,避免 Git clone 复用失效源 - 若曾用过私有 Packagist 或 Satis,也要删对应 URL 的
repo/https---子目录,否则下次 update 仍会尝试连它 - 杀毒软件或 IDE(如 PHPStorm)可能锁住这些文件,删不掉时先关掉实时扫描










