composer install 跳过网络请求需设 composer_disable_network=1 并确保 composer.lock 完整,因离线时仍校验元数据;vendor 存在却报错是因默认读 packagist.org;离线不可 update,仅能同步开发机生成的 lock 文件。

composer install 时如何跳过网络请求?
Composer 本身没有“离线模式”开关,但可以通过预下载依赖 + 禁用远程仓库的方式强制走本地缓存。关键不是关掉网络,而是让 composer install 完全不尝试访问 packagist.org 或其他配置的仓库。
实操建议:
- 确保所有依赖已通过
composer install或composer update在有网环境完整执行过一次,这样vendor/和composer.lock都是完整的 - 运行前设置环境变量:
COMPOSER_DISABLE_NETWORK=1(Linux/macOS)或set COMPOSER_DISABLE_NETWORK=1(Windows CMD) - 加上
--no-plugins --no-scripts更稳妥,避免插件触发额外网络调用 - 不要动
composer.json里的repositories配置——哪怕只是注释掉一条,COMPOSER_DISABLE_NETWORK=1下也会报错退出
为什么 vendor 目录存在、lock 文件也对,还是报 “Package not found”?
常见错误现象:明明 vendor/ 里已有包,composer install 却提示 Package xxx is not available...。根本原因不是缺文件,而是 Composer 在安装前仍会校验元数据——它默认要读 packagist.org 的包信息,哪怕最终不用下载。
解决路径只有两条:
大高朋团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP+ACCESS开发的团购程序,安装超简,功能超全面,在保留大高朋团购系统版权的前提下,允许所有用户免费使用。大高朋团购系统内置多种主流在线支付接口,所有网银用户均可无障碍支付;短信发送团购券和实物团购快递发货等。 二、为什么选择大高朋团购程序系统? 1.功能强大、细节完善 除了拥有主流团购网站功能,更特别支
- 用
COMPOSER_DISABLE_NETWORK=1+ 完整的composer.lock(含所有包的dist.url和dist.shasum) - 或者提前用
composer archive或composer dump-autoload配合--classmap-authoritative减少运行时依赖,但这不能绕过 install 阶段的校验 - 注意:
composer install --ignore-platform-reqs不解决网络问题,它只跳过 PHP 扩展版本检查
离线环境下怎么更新 lock 文件?
不能更新。这是最容易踩的坑:composer update 必须联网,COMPOSER_DISABLE_NETWORK=1 下直接报错。所谓“离线更新”,实际是换机器操作:
- 在有网机器上跑
composer update,生成新composer.lock - 把新
composer.lock和(可选)vendor/打包带走 - 目标离线机只运行
composer install,且必须确保composer.lock里的每个包的dist.url指向的是本地路径(比如file:///path/to/archives/xxx.zip)——但这需要提前用composer config repositories.0 type path配置本地仓库,且维护成本高 - 更现实的做法:离线机只做 install,不 update;所有变更都在开发机完成并同步 lock 文件
vendor 压缩包缓存能当离线源用吗?
不能直接当源用,但可以省下载时间。Composer 缓存目录(~/.composer/cache/files/)里存的是 zip 包和 metadata,但 install 过程中不会自动查这个缓存来替代网络请求。
如果你控制部署流程,可以:
- 用
composer install --prefer-dist --no-progress确保走 dist 分发(zip 包)而非 source(git clone) - 手动把
~/.composer/cache/files/整个复制到离线机相同路径,再设COMPOSER_CACHE_DIR=/path/to/cache - 但前提是离线机的 Composer 版本、PHP 版本、平台架构与原机器一致,否则 shasum 校验失败会回退尝试网络下载
真正可靠的离线方案,永远依赖两件事:一份未被篡改的 composer.lock,和一个完全不碰网络的执行环境。中间任何环节松动,就会漏请求。









