composer_disable_network=1是离线模式硬性前提,必须提前设置;不设它,所有--no-xxx参数无效,composer install仍强制请求远程元数据而失败。

COMPOSER_DISABLE_NETWORK=1 是离线模式的硬性前提,不设它,任何跳过证书验证的操作都无效——因为 Composer 会先尝试联网校验元数据,根本走不到证书验证那步。
为什么不能靠“断网”自动进离线模式
Composer 不会因网络不通就自动降级为离线行为。只要没显式禁用网络,composer install 仍会强制请求 https://repo.packagist.org/packages.json,报错是 Curl error 60 还是 Could not resolve host 只取决于你断网的方式,但结果一样:失败。
-
COMPOSER_DISABLE_NETWORK=1是环境变量开关,必须提前设置,且对所有后续命令生效 - 即使
vendor/和composer.lock都完整,不设这个变量,install 依然报远程请求失败 - Windows 用户注意:CMD 中用
set COMPOSER_DISABLE_NETWORK=1,PowerShell 中用$env:COMPOSER_DISABLE_NETWORK="1"
离线时还报 SSL 错误?说明网络没真正切断
如果你已设 COMPOSER_DISABLE_NETWORK=1,却仍看到 SSL certificate problem 或 cURL error 60,基本可以确定:Composer 还在试图发 HTTPS 请求——这意味着配置被绕过了。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查是否误用了
composer config -g secure-http false:这个只影响仓库协议强制策略,不阻止离线模式下的元数据校验逻辑 - 确认没有残留全局镜像配置:
composer config --global repo.packagist若返回https://mirrors.aliyun.com/composer/,它会在离线时 fallback 尝试连接,必须运行composer config --global repo.packagist false彻底禁用 - 某些插件(如
phpstan/extension-installer)会在--no-plugins外部触发网络调用,所以--no-plugins不是可选参数,是必须项
离线 install 的最小安全命令组合
这组参数不是“优化”,是防止意外联网的强制防护线。缺一不可:
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader- 执行完立刻补:
composer dump-autoload -o,否则运行时大概率Class not found - 若项目含
"type": "path"仓库,确保对应目录下有合法composer.json,且name和version(或dev-*分支标识)完整 - 如果
composer.lock里存在"source": {"type": "git", ...},离线无法校验,install 必然失败——这种锁文件天生不支持离线
离线场景下,“跳过证书验证”本身是个伪命题:真正要防的不是证书错误,而是 Composer 在你没察觉时偷偷联网。所有看似绕过 SSL 的配置(比如 disable-tls true、secure-http false),在 COMPOSER_DISABLE_NETWORK=1 下既无意义也不起作用。关键动作永远只有两个:设环境变量 + 清掉所有可能触发网络的配置点。










