离线安装Composer依赖必须提前准备composer.lock、vendor目录和composer.phar(可选),缺一不可;仅拷贝部分文件或配置镜像源无效,因离线时所有联网行为必须彻底禁用,否则install必然失败。

离线环境下 Composer 无法自动下载包或验证签名,composer install 和 composer require 会直接失败——这不是配置问题,而是缺少网络依赖的必然结果。必须提前在有网机器上完成「完整依赖快照 + 运行时支持文件」的打包,再拷贝到目标环境。
离线安装前必须准备的三个文件
只拷贝 composer.phar 或只复制 vendor/ 目录,99% 的情况会报错。真正需要的是:
-
composer.lock:精确锁定所有依赖版本、哈希值、嵌套依赖关系。没有它,composer install会尝试联网解析依赖树 -
vendor/目录(含全部已安装包):包含所有.php文件、autoload.php、bin/脚本等运行必需内容 -
composer.phar(可选但推荐):离线环境若无全局composer命令,需带这个文件并用php composer.phar install --no-scripts --no-plugins启动
如何生成可离线复用的 vendor 目录
关键不是“装完就拷”,而是确保 vendor 中每个包都满足离线加载条件:
- 运行
composer install --no-dev --optimize-autoloader,避免 dev-only 包混入且生成高效 autoload 静态映射 - 确认项目
composer.json中未使用repositories指向私有源(否则离线时仍会尝试连接) - 检查
vendor/composer/autoload_*.php是否存在且不包含远程 URL 字符串(某些插件会动态拼接 CDN 地址) - 若项目含
scripts(如post-install-cmd),离线时需加--no-scripts参数跳过,否则可能因调用外部命令失败
离线环境执行 install 的正确命令组合
不要直接运行 composer install,它默认会检查更新、验证签名、拉取元数据——这些全要网。应显式禁用所有联网行为:
- 基础命令:
php composer.phar install --no-interaction --no-scripts --no-plugins --ignore-platform-reqs -
--ignore-platform-reqs是关键:跳过 PHP 版本、扩展(如ext-mbstring)等平台检查,否则离线机若 PHP 小版本略低就会中断 - 如果已确认
vendor/完整且composer.lock未变,可改用composer dump-autoload --optimize仅刷新自动加载,更快更安全 - 注意:Windows 下若用
composer.bat启动,它内部会调用php.exe;确保该路径下php.exe可用,且php_openssl.dll已启用(否则即使离线也会在解压 phar 时卡住)
镜像源配置在离线场景完全无效
composer config -g repo.packagist 这类操作对离线无意义——镜像只是换了个下载地址,本质仍是联网。离线唯一有效的“源”是本地 vendor/ + composer.lock 组合。常见误解:
- 以为配了阿里云镜像就能离线装新包 → 错,镜像不等于缓存,它不保存历史包
- 把
~/.composer/cache/打包过去 → 错,cache 是临时索引和 zip 缓存,不含完整可运行代码,且路径硬编码不可移植 - 用
composer archive打 zip → 错,它只打包当前项目代码,不包含 vendor 和 autoload 逻辑
真正可靠的离线交付物,只有三样:项目代码 + composer.lock + 完整 vendor/ 目录。少一个,启动时就可能报 Class not found 或 require(): failed to open stream。


















