composer clear-cache必须执行,因为它清除files/(损坏zip)、repo/(元数据快照)、vcs/(git裸库)三类核心缓存,缺一不可;否则镜像配置更新后仍会依据旧快照请求,导致404或corrupted archive。

composer clear-cache 为什么必须先执行
缓存不是“可选清理项”,而是 Composer 的元数据中枢——packages.json 快照、中断下载的 .zip 包、过期的 vcs/ 仓库都堆在 ~/.composer/cache/ 里。镜像配置改了,但缓存还存着旧源的包列表,composer install 就会照着错的快照去请求,结果仍是 404 或 “corrupted archive”。
-
composer clear-cache会清掉files/(损坏 ZIP)、repo/(元数据快照)、vcs/(Git 裸库),三者缺一不可 - 不加
--no-interaction在 CI 环境(如 GitHub Actions)会卡住,因为没 TTY 可确认 - 若提示
Permission denied,说明部分子目录属主不是当前用户(比如曾用sudo composer),需先修复权限:sudo chown -R $USER:$USER ~/.composer/cache - 手动
rm -rf ~/.composer/cache极危险:可能删到正在被 IDE 或后台进程占用的锁文件,导致后续缓存索引损坏
配置 repo.packagist 字段的正确写法
键名、type 值、URL 结尾斜杠,三者错一个就静默失效——命令跑完没报错,但 composer install -vvv 日志里仍出现 packagist.org。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 固定键名是
repo.packagist(单数),不是repos.packagist(复数)或repositories - 中间必须带
composer作为 type 值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾,否则拼出的路径是/composerpackages.json,直接 404 - Windows 用户改完要重开终端,否则环境变量未刷新,
composer config -g repo.packagist查不到新值
验证是否真走镜像的唯一可靠方式
别信 composer config -g repo.packagist 的输出,它只告诉你“写了什么”,不等于“生效了什么”。实际请求地址才是真相。
- 运行
composer install -vvv 2>&1 | grep "GET https"(Linux/macOS),看域名是不是mirrors.aliyun.com - Windows 用
composer install -vvv > log.txt,再用记事本搜索GET https - 如果日志里出现
https://packagist.org/packages.json,说明被项目级"repositories"字段覆盖了 - 临时绕过所有自定义源:加
--repository=https://packagist.org参数,如果这时变快,坐实是配置覆盖问题
项目级 repositories 覆盖全局配置时怎么办
只要项目根目录 composer.json 里有 "repositories" 字段,无论内容空或满,全局镜像都会被无视——这是 Composer 的设计逻辑,不是 bug。
- 检查命令:
composer config repo.packagist(无-g),有输出就说明项目自己写了源 - 安全删除方式:
composer config --unset repositories(注意没-g) - 如果
composer.json里"repositories"是数组(比如含私有包),config --unset会失败,需手动编辑 JSON,删掉整个"repositories": [...]块 - 某些 Laravel 脚手架模板自带
{"packagist.org": false}却没配替代源,结果就是找不到包;删掉该条目即可
COMPOSER_CACHE_DIR 指向 NFS)或漏查项目级 repositories,都会让重置动作白做。










