直接删 ~/.composer/cache/files/ 或 %APPDATA%\Composer\Cache\files\ 最安全有效,因其集中存储所有 ZIP/TAR 包(占缓存 70% 以上),删除后仅首次重下稍慢,不损元数据或 Git 缓存,不触发损坏报错,且普通权限即可操作。

直接删 ~/.composer/cache/files/ 或 %APPDATA%\Composer\Cache\files\ 就行,这是最安全、最有效的做法。
为什么只清 files/ 目录就足够?
Composer 下载的 ZIP/TAR 包全存在 files/ 子目录里,一个 Laravel 包的 dist 归档常达 5–20 MB,几十个老版本叠在一起轻松吃掉 1–2 GB。它不包含元数据(repo/)或 Git 克隆(vcs/),删了不影响后续 install/update 的正确性,只是首次重下会慢一点。
-
files/占缓存总空间 70% 以上,清理收益最高 - 不会触发 “Corrupted cache file” 报错(
repo/和vcs/才容易因中断写入损坏) - 不需要
--no-interaction或杀进程,普通用户权限即可执行
Linux/macOS 下精准清理旧 ZIP 包
别一股脑 rm -rf ~/.composer/cache/files——万一正在 composer update,删到一半会出问题。用 find 按时间筛更稳妥:
find ~/.composer/cache/files -name "*.zip" -mtime +90 -delete
说明:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
-mtime +90:只删 90 天前的 ZIP,避开最近装过的包 - 不加
-delete先试运行,看输出是否合理 - 如果提示
Permission denied,说明有文件属主是 root(之前用过sudo composer),加2>/dev/null忽略错误,或先chown -R $USER:$USER ~/.composer/cache/files
Windows 用户怎么清 files/?
资源管理器进 %APPDATA%\Composer\Cache\files\,按“修改日期”排序,手动删掉年份早于 2025 的文件夹(每个文件夹名是包名+哈希,不用怕认错)。更省事的是命令行:
forfiles /p "%APPDATA%\Composer\Cache\files" /s /d -90 /c "cmd /c if @isdir==FALSE del @path"
注意:
- PowerShell 不兼容这个语法,必须用
cmd.exe -
forfiles默认只扫一级,加/s才递归子目录 - 删完建议跑一次
composer clear-cache --dry-run确认files/已空
清完还报磁盘满?临时目录才是真瓶颈
很多人清完 files/ 发现 composer install 还卡在 Extracting archive,根本原因是 PHP 的系统临时目录(/tmp 或 %TEMP%)满了。Composer 下载 ZIP 后,会在那里解压、重命名、校验,峰值占用可能是 vendor 大小的 2–3 倍。
- 查当前临时路径:
php -r "echo sys_get_temp_dir();" - Linux/macOS:清
/tmp/composer_*.zip和/tmp/php*.phar - Windows:清
%TEMP%\composer_*.zip,注意有些杀软会锁住这些文件,需关掉实时防护再删 - 长期方案:设环境变量
TMPDIR(Linux/macOS)或TEMP(Windows)指向大分区
真正麻烦的不是缓存本身,而是你不知道 Composer 在哪一步偷偷占用了哪个临时位置——files/ 只是冰山一角,sys_get_temp_dir() 才是那个永远躲在后台、等磁盘爆掉才露头的家伙。

















