报“failed to extract”或“corrupted archive”错误时,根本原因是本地 composer 缓存 zip 文件损坏,需先定位并删除对应缓存 zip,再执行 composer install --no-cache --force-checksums 重建。

报“Failed to extract”或“corrupted archive”时,别急着删 vendor
这类错误几乎全是本地缓存 ZIP 文件损坏导致的,不是网络问题,也不是代码缺陷。Composer 拿一个半截的 ZIP 去解压,自然失败。错误信息里通常带具体路径,比如 Failed to extract vendor/symfony/console 或 Corrupted zip file: vendor/monolog/monolog——这就是关键线索,必须盯住它。
常见误操作是直接 rm -rf vendor,但这样没用:composer.lock 里记着旧的 dist.sha256,重装时仍会拿那个坏 ZIP 去校验,卡在同一个地方。
- 先查缓存位置:
composer config cache-dir(通常是~/.composer/cache/files/) - 进该目录,用文件名模糊匹配定位:
ls -l symfony/console-*.zip或find . -name "*monolog*zip" - 删掉对应 ZIP:
rm -f ~/.composer/cache/files/symfony/console-6.4.0.zip(版本号要和错误里一致) - Windows 用户用 PowerShell:
Remove-Item "$env:APPDATA\Composer\Cache\Files\symfony\console-*.zip"
重装必须带 --no-cache --force-checksums
只清缓存或只删 vendor 都不解决问题。真正起作用的是这两个参数组合:
-
--no-cache:强制跳过~/.composer/cache/files/,所有包都重新从镜像拉取 -
--force-checksums:校验失败时立刻退出,不尝试解压损坏 ZIP,防止污染vendor/
命令就是:composer install --no-cache --force-checksums。它严格按 composer.lock 还原,不会改变依赖树,比 composer update 安全得多。
注意:--force-checksums 不会写入配置,每次都要显式带上;CI 环境中也得写进 workflow 步骤里,不能只在本地跑过就以为生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
镜像源配置失效?检查 URL 末尾有没有 /
很多人设了阿里云镜像却没效果,原因常是 URL 少了个斜杠。比如设成 https://mirrors.aliyun.com/composer,实际拼出的请求地址是 https://mirrors.aliyun.com/composer/packages.json → 404,Composer 静默回退到官方源,根本没走镜像。
验证是否真生效:composer config -g repo.packagist,输出必须是类似:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}(注意末尾 /)。
- 项目级
composer.json中若写了"repositories"字段,会彻底覆盖全局镜像配置 - 私有源或 Satis 若没正确提供
dist.shasum,也会假报损坏——这时得查源配置,不是本地问题
CI 构建失败的隐藏元凶:缓存目录权限错位
CI runner 常以非 root 用户运行,但之前有人用 sudo composer 写过配置,导致 ~/.composer/cache 属主变成 root。普通用户执行 composer clear-cache 会 Permission denied,命令看似成功,实则什么都没删成。
排查方法:
- 查路径:
composer config --global cache-dir - 看权限:
ls -la ~/.composer/cache,确认属主是否为当前用户 - 磁盘空间不足也会导致解压中断,顺手跑下:
df -h
最常被忽略的,其实是缓存目录权限和磁盘空间——它们不出错则已,一出就是反复失败,比换源、重试更值得优先检查。










