必须设COMPOSER_DISABLE_NETWORK=1,否则Composer默认先联网请求packages.json校验元数据,即使vendor和lock文件完整也会卡在Loading composer repositories或报Could not fetch。

离线开发网络里,composer install 为什么总卡在 Loading composer repositories
因为 Composer 默认行为是「先联网拉元数据,再查缓存」,哪怕 vendor/ 已存在、composer.lock 一字未改,它仍会尝试请求 https://repo.packagist.org/packages.json。没网时直接卡住或报 Could not fetch,不是缓存没用,是你没告诉它“别上网”。
必须设 COMPOSER_DISABLE_NETWORK=1,否则其他参数全无效
这不是可选项,是硬性开关。不设这个,--no-plugins、--no-scripts、甚至 --repository-url=file:// 都拦不住 DNS 请求和元数据校验。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:命令前加前缀,如
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-dev --optimize-autoloader - Windows CMD:先
set COMPOSER_DISABLE_NETWORK=1,再运行composer install - PowerShell:先
$env:COMPOSER_DISABLE_NETWORK="1",再运行命令 - 别信
--no-network或--offline—— 它们不是合法参数,官方从未实现
提前准备依赖,只拷 vendor/ 最快,但环境必须严丝合缝
直接复制 vendor/ 是最快路径,但失败率高,往往栽在细节上。
- PHP 版本必须完全一致(含小版本,比如
8.2.12vs8.2.13可能因内部 API 微变导致Class not found) - 关键扩展必须已启用:
mbstring、openssl、json、curl、zip缺一不可 - 打包前务必在源机运行:
composer install --no-dev --optimize-autoloader,再用php -r "require 'vendor/autoload.php'; echo class_exists('Monolog\Logger') ? 'OK' : 'FAIL';"验证 - 解压后优先执行:
composer dump-autoload -o --classmap-authoritative,避免 symlink 权限或挂载方式引发类加载遗漏 - 别用
zip打包(尤其 Windows → Linux),用tar -czf vendor.tgz -C /path/to/project vendor/
用缓存打包更可控,但必须三目录齐全
如果项目有私有包、或要复现精确的 lock 文件状态,缓存迁移比直接拷 vendor/ 更可靠——前提是打包完整。
- 先查真实缓存路径:
composer config --global cache-dir(Linux/macOS 默认~/.composer/cache,Windows 是%LOCALAPPDATA%\Composer\cache) - 必须打包整个缓存根目录:
files/(ZIP 包)、repo/(packages.json映射表)、archived/(归档缓存),缺一不可 - 离线机上需同步设置:
composer config --global cache-dir /path/to/restored/cache - 验证是否成功:
ls $(composer config --global cache-dir)/repo/https---packagist.org/packages.json应存在且非空 - 安装命令:
COMPOSER_DISABLE_NETWORK=1 composer install --prefer-dist --no-plugins --no-scripts --no-dev
ext-zip 没开、composer.lock 被 IDE 自动格式化过,都足以让 composer install 在离线时静默失败或报错延迟到运行时才暴露。

















