缓存路径不对或没清到关键子目录,是“清了没用”的最常见原因。需先用composer config --global cache-dir确认真实路径,再手动清理cache/files/、cache/vcs/和sys_get_temp_dir()下堆积的临时文件,因clear-cache默认跳过vcs/且不触碰系统临时目录。

直接回答:缓存路径不对或没清到关键子目录,是“清了没用”的最常见原因。 不是命令失效,而是你清理的位置、范围或时机出了偏差。
怎么确认 Composer 正在用哪个缓存路径
很多人删的是 ~/.composer/cache,但 Composer 实际用的可能是 /mnt/nfs/composer-cache 或 D:\composer-cache——尤其在公司环境或 CI 中,COMPOSER_CACHE_DIR 环境变量会完全覆盖默认值。
- 运行
composer config --global cache-dir,输出才是当前生效路径 - Linux/macOS 下验证大小:
du -sh $(composer config --global cache-dir) - Windows 用户在资源管理器地址栏粘贴
%APPDATA%\Composer\Cache,右键 → “属性” - 如果输出为空或报错
Cache directory does not exist,加-v查真实配置:composer config --global --list | grep cache
为什么 composer clear-cache 清完空间没变
它确实清了,但你真正想腾空间的地方可能根本不是缓存目录本身。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 最常被误判的是
vendor/目录:一个中等 Laravel 项目vendor/常超 300 MB,而缓存可能只有 42 MB -
cache/vcs/默认被跳过:单个 Git 裸仓库(含.git)能占 300–800 MB,且耗尽 inode;必须手动删:rm -rf $(composer config --global cache-dir)/vcs/*(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs"(Windows) - 系统临时目录也被重度使用:
sys_get_temp_dir()返回的路径(如C:\Users\xxx\AppData\Local\Temp或/tmp)里堆积大量composer_*.zip,需单独清理 - CI/CD 中若挂载了持久卷,
clear-cache只清本地路径,挂载点里的文件还在
缓存损坏导致 composer install 报错怎么办
Failed to extract 和 corrupted archive 这类错误,99% 是缓存里 ZIP 文件本身已损坏,不是网络问题。
- 先定位包名,比如报错提到
monolog/monolog,就去$(composer config --global cache-dir)/files/monolog/monolog/找对应 ZIP - 用
unzip -t xxx.zip测试是否可读;失败就删整个files/子目录,别只删单个 ZIP(损坏常成片出现) - 彻底绕过所有缓存干扰:
COMPOSER_CACHE_DIR=/dev/null composer install --no-cache - 若仍失败,换回官方源验证:
COMPOSER_REPO_PACKAGES=https://repo.packagist.org composer install --no-cache;成功说明是镜像源返回了污染包
清理后装包变慢、卡在 SAT 求解,是不是操作错了
不是。清缓存后首次安装变慢是设计行为:所有 ZIP 要重下、重解压,autoload 要重建。但卡在 Resolving dependencies through SAT 是另一回事——那是依赖约束不可满足,和缓存无关。
- 执行
composer update -vvv --profile,看日志停在哪:停在 SAT 阶段 → 用composer why-not vendor/package:version定位阻断链 - 若停在
Reading /packages.json from cache或Downloading→ 才需要检查缓存或镜像 - CI 构建中不要无脑加
clear-cache:缓存本该复用,频繁清反而拖慢构建 - 长期方案:禁用 Git 缓存,避免
vcs/积累:composer config --global cache.vcs false
最容易被忽略的是 inode 耗尽——df -i 显示 Use% 接近 100%,但 df -h 还剩几十 GB,这时候删大文件没用,得清 cache/vcs/ 和 sys_get_temp_dir() 里成千上万的小文件。

















