Composer 中文镜像不支持真正离线安装,仅加速在线下载;离线需复用 vendor 目录或缓存,或用 packagist-mirror 工具预下载指定包。

Composer 中文镜像本身不支持真正意义上的“离线安装”——它只是加速在线安装的代理,没有预置全部包的本地副本。所谓“离线”,实际是指在无外网或网络受限环境下,复用已下载的包缓存或提前打包依赖。
为什么直接换镜像地址不能解决离线问题
修改 composer.json 中的 repositories 或全局配置 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,只影响新包的下载源,不改变 Composer 仍需联网解析版本、校验 hash、拉取 zip/tar 的本质行为。一旦断网,composer install 会立即报 Could not fetch https://mirrors.aliyun.com/... 或 file_get_contents(): failed to open stream。
真正可行的离线方案:复用 vendor + cache 目录
Composer 的缓存机制(~/.composer/cache)和已安装的 vendor/ 是离线复用的核心。关键在于确保目标机器上已有完整、匹配的缓存或 vendor:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 在有网机器上,用相同 PHP 版本、Composer 版本、平台配置(如
platform设置)执行composer install --no-dev --optimize-autoloader,生成干净的vendor/ - 将整个
vendor/目录打包(注意保留符号链接和文件权限),同步到离线机器对应项目路径下 - 离线机器无需运行
composer install,直接使用即可;若需生成 autoload 文件,运行composer dump-autoload --optimize(不联网) - 如需复用缓存,可整体拷贝
~/.composer/cache/files/和~/.composer/cache/repo/到离线机同路径(Linux/macOS 路径一致;Windows 需对应%APPDATA%\Composer\Cache\)
用 packagist.org 的 offline mirror 工具做轻量预下载
阿里云、腾讯云等镜像站不提供全量离线包,但你可以用开源工具 packagist-mirror(如 hirak/packagist-mirror)在内网服务器上搭建最小化镜像,仅同步你项目用到的包及其依赖:
- 配置
mirror.json指定需要的包名和版本范围,例如{"laravel/framework": "v9.0.0"} - 运行
php mirror.php sync,它会从官方 API 获取元数据,并下载 zip 包存到本地dist/目录 - 在离线环境配置 Composer 使用该本地目录:
composer config repositories.0.type package+composer config repositories.0.url /path/to/local/mirror - 注意:此方式需手动维护包列表,且不自动处理 dev-only 依赖或私有包
离线场景最常被忽略的是平台差异——PHP 扩展缺失(如 ext-zip)、composer.lock 中记录的 platform 与目标机不一致、或 vendor/bin 下二进制文件的 shebang 行路径硬编码,这些都会导致 vendor 看似复制成功,运行时却报错。

















