composer_disable_network=1 是唯一真正切断 composer 网络请求的开关;其他如 --offline 对 install 无效,镜像源仅联网时生效,离线需确保 vendor、cache 与 lock 文件严格匹配且哈希一致。

COMPOSER_DISABLE_NETWORK=1 是唯一能真正切断 Composer 网络请求的开关,其他参数(如 --offline)对 composer install 无效。网络不佳 ≠ 可以“半离线”,只要没显式禁网,它就会卡在 Could not fetch @#@#@#@#@#@#@#@#@#@0 或反复重试 DNS 查询。
为什么加了镜像源还是连不上
中文镜像(如阿里云、清华源)本质是远程代理,不是本地缓存。断网、防火墙拦截、DNS 污染、TLS 握手失败时,镜像地址本身不可达,Composer 就无法加载元数据——此时配再快的镜像也没用。- 镜像配置只在联网时生效,离线或弱网下不 fallback 到缓存
-
composer config -g repo.packagist @#@#@#@#@#@#@#@#@#@1必须提前在稳定网络下执行并验证成功 - 弱网环境下,
packages.json下载中断会导致后续所有包校验失败,哪怕 ZIP 已在缓存里
离线包能用的前提:vendor 和 cache 必须严格匹配 lock 文件
Composer 不会“自动凑合”已有的文件。它只认三样东西同时存在且哈希一致:composer.lock中每个包必须含"dist": {"url": "...", "shasum": "..."}字段(即由--prefer-dist生成)对应 ZIP 必须存在于
cache-dir/files/下,路径为vendor/name/sha256hash.zip(不是随便放个同名 ZIP 就行)cache-dir/repo/https---repo-packagist-org/packages.json必须存在且是合法 JSON(可用jq . packages.json > /dev/null快速验证)运行
composer config --global cache-dir查出缓存路径,进repo/子目录确认文件非空若用 Docker 或 CI 构建,别把
cache/目录挂载成 emptyDir,否则每次构建都丢缓存
弱网下最稳的临时方案:用 path 仓库绕过远程源
不依赖网络下载,而是把已有的包代码直接当源用。适合调试、复现、或已有 ZIP 解压好的场景。- 本地包根目录下必须有完整
composer.json,含"name"(大小写敏感)和"version"(如"dev-main"或"1.2.3") - 项目
composer.json的repositories字段加一条:{"type": "path", "url": "./packages/my-lib"} - 执行
composer require my-vendor/my-lib:dev-main(版本号必须和本地包一致) - Windows 用户注意:
url推荐用正斜杠,如C:/projects/my-lib,避免反斜杠转义问题
这个方式跳过了所有远程请求,但要注意:Composer 默认会在 vendor/ 下创建符号链接(Linux/macOS)或复制(Windows),不是静态 ZIP 解压,所以替换本地包代码后需手动 rm -rf vendor/my-vendor/my-lib 再重装。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
真正离线部署,别碰 composer update 和 create-project
这两个命令在离线时必然失败,没有例外:
composer update强制拉取最新元数据,即使COMPOSER_DISABLE_NETWORK=1也会退出并报错composer create-project是黑盒流程,内部会触发 install + dump-autoload + 脚本,离线几乎不可控正确做法是:在联网环境先跑
composer install --no-dev --prefer-dist,打包整个vendor/目录带走离线机上只运行
composer install --no-plugins --no-scripts --no-autoloader(确保 vendor 结构对齐),再补一记composer dump-autoload -ocomposer.lock文件不能删、不能改、不能 merge 冲突残留,它是离线安装的唯一事实来源
复杂点在于:PHP 小版本、扩展(ext-zip、ext-openssl)、甚至 composer.phar 版本不一致,都可能导致 ZIP 解压失败或 autoload.php require 报错——这些错误不会提示“网络问题”,但根源仍是离线前没做环境对齐。










