离线执行composer install必须设composer_disable_network=1,否则即使vendor/和composer.lock完整也会因远程元数据校验失败而卡住;需配合--no-plugins、--no-scripts、--no-autoloader,并在之后运行composer dump-autoload -o。

离线环境不能靠“断网自动识别”,必须提前切断所有网络触发点,否则composer install一定卡在Could not fetch https://repo.packagist.org/packages.json。
为什么composer install在有vendor/和composer.lock时仍报错
错误不是因为文件缺失,而是 Composer 默认会在 install 阶段校验远程元数据:包是否存在、版本是否合法、dist URL 是否可访问。这个行为无法跳过,除非显式禁用网络通路。
-
COMPOSER_DISABLE_NETWORK=1是硬性前提——不设它,所有--no-xxx参数都无效 - 即使
vendor/完整,只要composer.json里写了"repositories": [{"type": "packagist", "url": false}],COMPOSER_DISABLE_NETWORK=1下也会直接退出(不是静默忽略) - 全局配置残留
repo.packagist会触发 fallback 校验,必须运行composer config --global repo.packagist false彻底禁用 - 如果
composer.lock中某个包是"source"类型(如"dev-master"或 Git URL),离线时无法校验,install 必然失败
离线执行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 下路径分隔符不影响解析) - 运行
composer require acme/utils即可安装——此时 Composer 不联网,只读取本地composer.json并硬链接或复制文件
别碰create-project和update命令
composer create-project本质是两步合并:先远程克隆模板仓库,再递归install。它第一件事就是访问https://repo.packagist.org/packages.json解析元信息,COMPOSER_DISABLE_NETWORK=1对它无效,--offline参数不存在,也不读本地缓存。
- 离线初始化项目的唯一可行路径:在联网机上
git clone骨架 →composer install --no-dev --prefer-dist --no-scripts --no-plugins --optimize-autoloader→ 打包整个项目(含vendor/和composer.lock)→ 拷入离线机 -
composer update必须禁用,它会强制连packagist.org,离线环境下没有替代方案 - 若项目用了私有包(如 GitLab 私仓),需提前把对应 Git 仓库 clone 到本地,并在
composer.json中用path类型仓库声明
真正容易被忽略的是 PHP 扩展一致性——哪怕vendor/全拷过去,目标机缺ext-zip或ext-redis,autoload.php require 就可能直接 fatal error,而这个错误不会出现在composer install阶段,只在运行时爆发。










