Composer install卡在downloading阶段需先执行--no-cache跳过损坏缓存,再查-vvv定位失败URL并验证连通性;国内用户应配置阿里云镜像源(末尾无斜杠)且清缓存,必要时设process-timeout为1800。

Composer install 卡在 downloading 阶段怎么办
网络中断后 composer install 常卡在某个包的 downloading 状态,甚至报 Connection refused 或 curl error 7。这不是 Composer 本身坏了,而是它默认不自动重试失败的下载,且缓存机制在断点处容易失效。
- 先别删
vendor或composer.lock——多数情况下只需恢复下载即可 - 执行
composer install --no-cache强制跳过本地缓存,避免读取损坏的临时文件 - 如果仍失败,加
-vvv查看具体卡在哪一个包、哪个 URL,再手动测试该地址是否可访问(比如用curl -I https://repo.packagist.org/...) - 国内用户建议提前配置镜像源,但注意:切换镜像后首次运行需加
--ignore-platform-reqs避免因平台约束触发额外校验失败
如何安全地从中断处继续安装
Composer 没有原生的 “resume” 命令,但可通过组合操作绕过已成功安装的包,只重试失败部分。
- 检查
vendor/composer/installed.json是否存在——若存在,说明已有部分包写入,此时直接composer install会尝试补全剩余依赖 - 若
installed.json缺失或损坏,用composer install --dry-run先预览要安装的包列表,确认哪些还没落地 - 对单个失败包,可单独执行
composer require vendor/package:version --no-update,再composer update vendor/package单独拉取 - 切忌在中断后直接删
vendor再重装——这会导致已成功安装的包重复下载,且可能因版本漂移引入不兼容变更
为什么换镜像源后还是报 timeout
不是所有镜像都同步及时,也不是所有包都会走镜像源。Packagist 的元数据(packages.json)和实际 ZIP 包可能分属不同 CDN 节点,而 Composer 默认只镜像元数据,ZIP 下载仍可能直连原始源。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确认镜像是否支持完整代理:阿里云、腾讯云镜像支持
packagist.phpcomposer.com全链路代理;华为云镜像仅代理元数据,ZIP 仍走海外 - 运行
composer config -g repos.packagist.org.url https://mirrors.aliyun.com/composer/才算真正切换(注意末尾无斜杠) - 某些私有包或 GitHub 仓库依赖,不受 packagist 镜像影响,需单独配置
repositories或使用git clone+path类型 repo - 超时阈值默认 300 秒,可临时提高:
composer config -g process-timeout 1800
修复后如何验证 vendor 是否完整
光看 vendor 目录存在不等于所有类能加载,尤其 autoloader 可能没更新。
- 运行
composer dump-autoload -o强制重建优化后的 autoload map,比install自带的更彻底 - 检查
vendor/autoload.php是否可被 require —— 用php -r "require 'vendor/autoload.php'; echo 'ok';"快速验证 - 若有插件(如
composer/installers),确认其安装路径(如wp-content/plugins)下对应文件是否存在,因为这类路径不走标准 PSR-4 autoload - 如果项目用
classmap或filesautoload,记得在composer.json中重新声明后运行dump-autoload
网络问题最麻烦的不是重装,而是中断后残留的半成品文件和未刷新的 autoload 映射——这两处不清理干净,后续任何命令都可能静默失败。

















