composer离线安装必须显式设composer_disable_network=1并执行composer install --no-plugins --no-scripts --no-autoloader,再运行composer dump-autoload -o;vendor存在仍报错是因默认校验远程元数据,该行为无法跳过,除非切断网络通路并绕过高风险环节。

不能靠“断网”自动进入离线模式,必须提前准备 + 显式禁用网络触发点,否则 composer install 一定会报 Could not fetch https://repo.packagist.org/packages.json。
为什么 vendor 存在、lock 文件也完整,composer install 还是报错?
错误不是因为文件缺失,而是 Composer 在 install 阶段仍会主动请求远程元数据(比如包是否存在、版本是否合法),这个行为默认开启,且无法跳过——除非你明确切断所有网络通路并绕过高风险环节。
-
COMPOSER_DISABLE_NETWORK=1是硬性前提,不设它,所有--no-xxx参数都无效 - 即使 vendor 目录完整,只要
composer.json里写了"repositories": [{"type": "packagist", "url": false}],COMPOSER_DISABLE_NETWORK=1下也会直接退出,不是静默忽略 - 如果
composer.lock中某个包标记为"source"类型(如"dev-master"或 Git URL),离线时无法校验,install 必然失败 - 全局配置残留
repo.packagist会导致 fallback 校验,必须运行composer config --global repo.packagist false彻底禁用
composer install 离线执行的最稳命令组合
这组参数不是“可选优化”,而是防止意外联网的强制防护。前提是:vendor/ 已存在、composer.lock 未改动、PHP 版本和必需扩展(mbstring、openssl、zlib)完全一致。
-
--no-plugins:跳过插件初始化,避免phpstan/extension-installer等隐式联网 -
--no-scripts:屏蔽post-install-cmd,防止脚本调用外部 API 或生成配置 -
--no-autoloader:绕过 autoload 重建,某些自定义实现会触发远程类查找
执行完必须立刻补一记:composer dump-autoload -o,否则运行时大概率报 Class not found。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
离线添加新包只能靠 path 仓库
composer require 默认必须联网查包名和版本,离线不可用。唯一可靠方式是把本地目录当仓库用:
- 目标包根目录下必须有合法
composer.json,含完整"name"(如"acme/utils")和"version"或分支标识(如"dev-main") - 项目根目录
composer.json中添加:"repositories": [{"type":"path","url":"./packages/my-utils"}](注意:url 必须是相对路径;Windows 要带盘符,如C:/projects/my-pkg) - 运行
composer require acme/utils:dev-main(版本号必须和本地包composer.json中的一致,不能写*或^1.0) - 装完立刻执行
composer dump-autoload,否则autoload.php不包含该包
复制 vendor/ 比跑 install 更可靠
如果你只是部署固定版本,别折腾命令。直接把外网机器上已验证可用的 vendor/ 和 composer.lock 整体拷到内网机,然后:
- 确认 PHP 版本、扩展完全一致(
mbstring、openssl、zlib缺一不可) - 入口文件中显式 require 绝对路径,如
require '/opt/myapp/vendor/autoload.php';,避免依赖当前工作目录 - 如果迁移后类找不到,先运行
composer dump-autoload --classmap-authoritative,不要立刻重装
真正离线 = 零网络 I/O,所有包内容必须以文件形式落地;任何依赖 HTTP 请求的方案(包括私有 repo、artifact 仓库)都不是纯离线,只是换了个内网地址。










