在联网环境使用 composer install --no-autoloader --no-scripts --prefer-dist 下载依赖并生成 composer.lock;2. 复制缓存目录 ~/.composer/cache/files 中的包到内网机器;3. 配置内网 Composer 全局 cache-files-dir 指向本地缓存路径;4. 运行 composer install --no-autoloader --no-scripts --prefer-dist 脱机安装。关键为保留 lock 文件与完整缓存。

在离线或内网环境中使用 Composer 安装 PHP 依赖时,由于无法访问 packagist.org 或 GitHub 等远程源,直接运行 composer install 会失败。解决办法是在有网络的环境中提前下载所有必需的包和元数据,然后将缓存复制到目标环境。以下是具体操作步骤。
1. 准备依赖清单并下载完整缓存
在一台可联网的机器上,确保项目中已存在 composer.json 和 composer.lock 文件(lock 文件必须存在,它锁定依赖版本)。
执行以下命令预下载所有依赖包:
- composer install --no-autoloader --no-scripts --prefer-dist - 这会安装依赖并下载所有 .zip 或 .tar 包到本地缓存目录
Composer 默认将包缓存到用户目录下的 ~/.composer/cache/files(Linux/macOS)或 C:\Users\用户名\AppData\Roaming\Composer\Cache\files(Windows)。
2. 手动导出缓存文件
找到缓存路径后,复制整个 files 目录中的内容。这些是每个依赖包的压缩包(如 vendor/package/version.zip),Composer 在离线安装时会优先使用它们。
也可以通过配置自定义缓存路径以便集中管理:
- composer config cache-files-dir /path/to/local-cache
之后再运行 composer install,所有包都会下载到指定目录,便于打包转移。
3. 配置离线环境使用本地缓存
将项目和缓存文件一起复制到内网机器。确保 Composer 已安装。
设置 Composer 使用本地缓存路径:
- composer config --global cache-files-dir /your/local/cache/path
然后在项目目录下运行:
- composer install --no-autoloader --no-scripts --prefer-dist --no-progress --no-suggest
如果所有包已在缓存中,Composer 将跳过网络请求,直接解压本地包完成安装。
4. 可选:打包为私有镜像或本地仓库
对于多项目共享场景,可进一步将缓存部署为私有 Satis 或 Toran Proxy 服务器,构建内网镜像站。但若仅需单次部署,直接复制缓存更简单高效。
关键是保证 composer.lock 不变,且缓存中包含 lock 文件所列的所有包版本。
基本上就这些。只要提前把包下全,并正确设置缓存路径,Composer 在无网环境下也能顺利完成依赖安装。










