答案:通过预下载依赖包、配置本地仓库、复制缓存或搭建私有镜像,可在离线环境使用 Composer 安装 PHP 依赖。具体步骤包括在联网机器上下载并打包依赖,迁移到离线系统后配置 composer.json 指向本地路径,或直接复制 Composer 缓存目录以实现无网络安装;企业级场景可部署 satis 等工具构建内网镜像,确保离线环境下依赖的完整性和版本匹配。

在没有网络连接或网络受限的环境中使用 Composer 安装 PHP 依赖包确实是个挑战,但通过合理的策略完全可以实现离线依赖管理。核心思路是:提前在有网络的环境中准备所需资源,再将其迁移到目标离线系统中。
1. 预下载依赖包到本地仓库
Composer 默认从 packagist.org 下载包,但在离线时需要一个本地的“镜像”。可以通过配置 Composer 使用本地文件系统作为源。
操作步骤如下:
- 在联网机器上创建一个目录用于存储所有依赖,例如 /path/to/local-repo
- 使用 composer install 或 composer update 正常安装项目依赖
- 运行命令将已安装的包导出为可分发的压缩包:
composer archive --format=zip --dir=/path/to/local-repo --file=your-package-name - 该命令会把每个依赖打包成 zip 文件并存入指定目录
2. 配置项目使用本地仓库
将打包好的依赖复制到离线环境后,需让 Composer 知道从哪里读取这些包。
修改项目的 composer.json 文件,添加 repositories 配置:
{ "repositories": [ { "type": "path", "url": "/path/to/local-repo" } ] }这样 Composer 会优先查找本地路径中的包。如果包名和版本匹配,就会直接解压使用,不再尝试联网。
注意:确保路径正确且有读取权限,Windows 下路径格式如 D:/local-repo。
3. 使用 Composer Cache 进行迁移
另一个高效方法是直接复制 Composer 的全局缓存目录。
- 在联网机器上执行 composer install,确保所有依赖已下载
- 找到 Composer 缓存目录(通常位于:
- Linux/Mac:~/.composer/cache/files
- Windows:C:\Users\用户名\AppData\Roaming\Composer\cache\files - 将整个 cache/files 目录打包复制到离线机器对应位置
- 在离线机器上使用相同版本的 Composer 执行安装,它会命中缓存,无需联网
此方式适合团队内部统一开发环境,减少重复下载。
4. 构建私有离线镜像(适用于企业级部署)
对于多项目或多服务器的离线场景,可搭建私有包镜像。
使用工具如 toran proxy 或 satis 在内网部署一个本地 Packagist 镜像。
- 在内网服务器上运行 satis,配置抓取所需公共包
- 生成静态的 composer 兼容仓库页面
- 所有离线机器将 Composer 源指向该内网地址
即使完全断网,只要 satis 已提前拉取过依赖,就能正常 install。
基本上就这些。关键是提前规划,把“下载”和“安装”两个步骤分离。只要包文件和元信息完整,Composer 就能离线工作。不复杂但容易忽略细节,比如版本号必须精确匹配、路径权限要开放等。










