应使用 composer install --no-network 命令,该选项自 composer 2.2+ 起内置,可强制离线运行,仅依据本地 composer.lock 文件还原 vendor 目录,不发起任何网络请求。

断网时 composer install 报错“无法解析依赖”怎么办?
断网状态下,composer install 默认会尝试访问 Packagist(或配置的仓库)校验包元数据和版本约束,即使 composer.lock 存在也会失败——这不是“版本检查”问题,而是网络连通性问题。真正的解决路径是让 Composer 完全离线运行,不发任何 HTTP 请求。
- 确保本地已有完整的
vendor/目录和有效的composer.lock文件(即之前成功安装过) - 运行:
composer install --no-network—— 这是 Composer 2.2+ 内置的离线模式开关,它禁止所有远程请求,仅基于lock文件还原依赖 - 若用的是旧版 Composer(--no-network 不可用,此时必须提前在有网时执行:
composer install --prefer-dist --no-progress确保所有包以 dist 归档形式下载并缓存,再断网运行composer install(依赖本地 cache)
--ignore-platform-reqs 在断网时有用吗?
没用。这个参数只跳过 PHP 版本、扩展等平台约束检查,和网络无关。断网时报的错通常是 Could not fetch packages... 或 Failed to download...,根源是 DNS 失败或连接超时,不是平台不满足。
- 加
--ignore-platform-reqs不会减少一次 HTTP 请求,也不会让 Composer “假装已联网” - 强行加上去只会掩盖真正的问题:比如你其实缺
ext-curl,但错误被压到后面才暴露,调试更绕 - 唯一例外:你断网前已删了
composer.lock,又想强制生成一个(不推荐),那得先有网跑composer update --no-network—— 但这是矛盾操作,根本不可行
为什么不能靠 composer.json 里改 php 版本来“绕过断网”?
改 "php": ">=7.4" 这类字段,只影响依赖解析逻辑,不解决网络请求问题。Composer 仍需联网获取每个包的 composer.json 元信息才能判断哪个版本满足该约束。
- 离线时,没有元数据,就无法做版本兼容性计算,
composer update必然失败 -
composer install唯一能离线工作的前提是:锁文件存在 + 所有包已缓存或已安装 + 无未决远程操作(如 git clone) - 如果项目用了
vcs仓库或package类型自定义源,断网时这些源无法访问,--no-network会直接报错退出,不妥协
lock + vendor 或完整 cache),而不是指望某个参数临时打通。










