必须先删 vendor/、再运行 composer clear-cache、确认镜像配置正确(url 无尾斜杠且未被项目级 repositories 覆盖)、最后执行 composer install --no-plugins --no-scripts --prefer-dist。

Composer 不支持断点续传,所谓“中断后继续”只是靠状态比对跳过已成功部分,不是真正恢复下载进度。遇到超大文件(如 laravel/framework dist 包)在中文镜像下载中断,直接重试大概率失败——因为缓存里存了半截 ZIP,installed.json可能被截断,vendor/目录残留破损结构。
为什么换镜像后还卡在 Content-Length mismatch?
这不是网络慢,而是镜像没真正生效,或缓存复用了损坏文件:
-
composer config -g repo.packagist输出必须是完整 URL,且末尾不能有斜杠:https://mirrors.aliyun.com/composer/❌,https://mirrors.aliyun.com/composer✅ - 项目级
composer.json中若存在"repositories"字段(尤其含已下线域名如laravel-china.org),会覆盖全局镜像设置 - 运行
composer install -vvv | grep -i "mirrors.aliyun",没输出说明流量根本没走镜像,仍在直连packagist.org -
Content-Length mismatch错误几乎总是缓存污染导致:~/.composer/cache/files/ 下某个 ZIP 只写了一半,重试时 Composer 仍会复用它并校验失败
Failed to extract vendor/package-name: unable to open archive 怎么办?
这不是 PHP 缺 zip 扩展,而是 ZIP 文件本身损坏,常见于镜像返回不完整响应或磁盘 I/O 异常:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先删
vendor/(Linux/macOS 用rm -rf vendor,Windows 用rmdir /s vendor) - 再执行
composer clear-cache,清空 ~/.composer/cache/files/ 下所有缓存 ZIP - 确认镜像配置正确:
composer config -g --list --verbose | grep -A2 "repo.packagist" - 最后跑
composer install --no-plugins --no-scripts --prefer-dist,绕过插件和脚本,强制走压缩包而非 git clone
怎么让超大包下载更稳?不是调重试次数,而是控制源头
Composer 没有 HTTP Range 支持,也没内置分块逻辑。所谓“更稳”,本质是减少失败环节:
- 换阿里云镜像后,加
composer config -g parallel-downloads 6(Docker 构建中别设超过 6,避免临时文件竞争) - 延长超时:
composer config -g timeout 600(HTTP 总耗时)、composer config -g process-timeout 1800(解压/脚本执行总时间) - 禁用插件:
--no-plugins绕过旧版hirak/prestissimo等引发的并发崩溃 - 私有包未同步到镜像?必须在项目
composer.json单独配"repositories",否则 Composer 会静默回退到官方源卡住
真正麻烦的不是下载中断,而是你没意识到 vendor/ 目录一旦残留破损结构,后续所有安装都会反复报错;清理顺序不能颠倒,clear-cache 必须在删 vendor/ 之后、install 之前执行——中间任何一步跳过,都可能让问题循环出现。










