镜像配置在离线模式下不生效,因其本质是远程代理,断网即失效;真正离线依赖本地缓存或预打包vendor,需联网时用--prefer-dist下载完整zip并验证cache/files/和repo/目录内容。

离线模式下 Composer 镜像配置本身不生效
Composer 中文镜像解决的是网络下载慢、超时、could not find package 等问题,但**它不是离线缓存工具**。镜像源本质是远程 HTTP(S) 服务代理,一旦断网或无访问权限,composer install 仍会失败——哪怕你配了阿里云、清华源,只要 https://mirrors.aliyun.com/composer/ 不可达,就无法拉取元数据和 ZIP 包。
真正能支撑离线使用的只有本地缓存 + vendor 提前打包
离线场景必须绕过远程请求,靠本地已有资源完成依赖还原。可行路径只有两条:
- 提前在有网环境执行
composer install --no-dev --prefer-dist,完整生成vendor/目录并打包带走(注意:不同 PHP 版本、扩展、OS 的vendor/可能不兼容) - 用
composer cache目录做“伪离线”:运行composer clear-cache后再composer install,所有 dist ZIP 和 metadata 会落盘到~/.composer/cache/;离线时复制整个cache/目录到目标机器,并设置COMPOSER_CACHE_DIR=/path/to/copied/cache - 不依赖
composer.lock的纯静态方案:用composer archive或手动 zipvendor/,配合composer install --no-install --no-autoloader跳过解析阶段,直接解压
镜像配置在离线流程中只起“预热”作用
你在联网时配好镜像,是为了让 composer install 尽快完成、缓存更全、减少失败重试——从而得到更干净的 vendor/ 和更完整的 cache/。但以下操作必须在联网时做完:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确保
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/生效(验证输出是完整 JSON) - 运行
composer update --lock或composer install,触发所有包的 dist ZIP 下载和packages.json元数据缓存 - 检查
~/.composer/cache/files/下是否有大量.zip,~/.composer/cache/repo/下是否有非空的https---mirrors-aliyun-com-composer/目录
离线后别动 composer.json 或删 composer.lock——任何变更都会触发远程元数据请求,直接卡死。
CI/CD 打包时容易忽略的离线陷阱
Docker 构建或 GitHub Actions 中常误以为“配了镜像就能离线”,结果构建机断网即失败。关键点:
-
RUN composer install必须在联网阶段执行,不能放到COPY vendor/后面——后者只是文件搬运,不校验 autoload 或平台兼容性 - 不要用
--repository-url=参数试图“临时换源离线”,它仍需发起 HTTP 请求 - 若用
COMPOSER_HOME隔离缓存,记得把整个cache/目录 mount 进容器,否则每次都是新缓存
离线不是配置问题,是资源前置问题。镜像只帮你更快攒齐那堆 ZIP 和 JSON 文件,攒不齐,断网后什么配置都救不了。










