composer_disable_network=1是离线安装唯一生效开关,必须配合--no-plugins、--no-scripts、--no-autoloader等参数,并清空全局及项目级packagist配置,否则仍会尝试联网请求packages.json。

COMPOSER_DISABLE_NETWORK=1 是唯一生效的离线开关
不设这个环境变量,其他所有参数都白搭。Composer 在 install 阶段默认会主动请求 https://repo.packagist.org/packages.json,哪怕 vendor/ 已存在、composer.lock 完整、甚至本地配置了 "repositories": [{"type": "packagist", "url": false}],只要没设 COMPOSER_DISABLE_NETWORK=1,它就一定会报错。
常见误操作包括:
- 只加
--no-plugins --no-scripts,却漏掉环境变量 - 在 Windows 上用
set COMPOSER_DISABLE_NETWORK=1后没重启命令行,导致变量未生效 - 用
export COMPOSER_DISABLE_NETWORK=1但后续命令没在同一 shell 中执行(比如写进脚本却忘了source)
全局禁用 packagist.org 必须两步清空
只在项目 composer.json 里删掉 repositories 条目不够。Composer 会 fallback 到全局配置,继续尝试 DNS 查询或连接 repo.packagist.org。
必须同时执行:
composer config --global repo.packagist false-
composer config repo.packagist(确认输出为空,不是composer https://packagist.org) - 检查项目级
composer.json的repositories数组,删掉任何含"url": "https://packagist.org"或"type": "packagist"的项
验证是否真禁用:运行 composer install -v,如果还看到 Downloading https://repo.packagist.org/packages.json,说明某处残留没清干净。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
离线 install 命令必须带全防护参数
composer install 在离线时不是“少发几个请求”,而是要堵死所有可能触发网络的路径。以下参数缺一不可:
-
COMPOSER_DISABLE_NETWORK=1(环境变量,非可选) -
--no-plugins:跳过插件初始化,防止phpstan/extension-installer等隐式联网 -
--no-scripts:屏蔽post-install-cmd,避免脚本调用外部 API -
--no-autoloader:绕过 autoload 重建,某些自定义实现会触发远程类查找
执行完这一步后,必须立刻补一记:composer dump-autoload -o。否则运行时大概率报 Class not found——因为 --no-autoloader 跳过了生成,而离线环境没法自动重试。
path/artifact 仓库不能替代网络禁用
很多人以为加个 "repositories": [{"type":"path","url":"./packages"}] 就算离线了,其实不是。这类配置只是告诉 Composer “去哪找包”,但不阻止它先去校验 Packagist 元数据。只要没关掉默认源,它仍会尝试连网。
artifact 类型虽不联网,但要求包文件命名严格为 vendor-name/package-name-version.tar.gz,且每个包内 composer.json 的 name 和 version 必须与文件名完全一致;path 类型则要求包目录下有合法 composer.json,且 require 时必须显式加 @dev(如 composer require my-utils/my-utils:@dev)。
最易被忽略的一点:即使用了 artifact 或 path,也必须先完成上面三步(设环境变量、清全局源、带全参数 install),否则 Composer 会在解析阶段就退出,根本不会走到仓库查找那步。










