必须先执行composer clear-cache,因为它是composer元数据中枢,缓存中残留的旧源packages.json快照、损坏zip包和过期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/:元数据快照(含packages.json) -
vcs/:Git 裸仓库(单个常占 300–800 MB,且大量小文件易耗尽 inode)
CI 环境(如 GitHub Actions)中务必加 --no-interaction,否则因无 TTY 卡住;若提示 Permission denied,说明部分子目录属主不是当前用户(比如曾用 sudo composer),需先运行:sudo chown -R $USER:$USER ~/.composer/cache。
配置 repo.packagist 字段的正确写法
键名、type 值、URL 结尾斜杠,三者错一个就静默失效——命令跑完没报错,但 composer install -vvv 日志里仍出现 packagist.org。
固定键名是 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 查不到新值。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
验证是否真走镜像的唯一可靠方式
别信 composer config -g repo.packagist 的输出,它只告诉你“写了什么”,不等于“生效了什么”。实际请求地址才是真相。
轻量验证方法:
- Linux/macOS:
composer diagnose -v | grep "Checking https",末尾应显示https://repo.packagist.org/packages.json(回官方)或https://mirrors.aliyun.com/composer/packages.json(走镜像) - 更直接:
composer require monolog/monolog --no-install -vvv 2>&1 | grep "GET https",观察日志中真实发起的 GET 请求 URL - Windows 可用:
composer install -vvv后手动搜索repo.packagist.org或镜像域名
注意:composer config -g repo.packagist 返回空,不代表已生效;composer diagnose 显示 Repo packagist is default 才算真正回到官方源。
删镜像配置时容易踩的坑
误删、漏删、删错层级,都会导致“看似清了,实则还在走镜像”:
- 全局配置要删
repo.packagist(单数),不是repos.packagist(复数);但新版 Composer 中repos.packagist已弃用,设了也无效,所以建议两者都清:composer config -g --unset repo.packagist和composer config -g --unset repos.packagist - 项目级配置优先级更高,必须进项目目录后单独清理:
composer config --unset repositories,或手动删composer.json中整个"repositories": {...}或"repositories": []块;删完立刻运行composer validate确保 JSON 合法 - 环境变量有最高优先级:
$COMPOSER_REPO_PACKAGIST(Linux/macOS)或%COMPOSER_REPO_PACKAGIST%(Windows),非空时会覆盖所有配置,需用unset COMPOSER_REPO_PACKAGIST或set COMPOSER_REPO_PACKAGIST=清除 - 切记不要用
composer config -g repo.packagist "",空字符串是合法值,会导致后续拉取失败;--unset才是逻辑删除
缓存路径可能不在默认位置(如 CI 中通过 COMPOSER_CACHE_DIR 挂到 NFS),执行 composer config --global cache-dir 先确认真实路径再清理;vcs/ 目录建议长期禁用:composer config --global cache.vcs false,避免反复生成裸仓库。










