必须设composer_disable_network=1,否则composer install必访https://repo.packagist.org/packages.json;需配合--no-plugins、--no-scripts、--no-autoloader执行,再运行composer dump-autoload -o。

直接启用离线模式,否则 composer install 一定会尝试访问 https://repo.packagist.org/packages.json,哪怕 vendor/ 和 composer.lock 都完整存在。
必须设 COMPOSER_DISABLE_NETWORK=1
这个环境变量是硬性开关,不设就不可能真正离线。Composer 在校验依赖时会强制发起网络请求,不是“有缓存就跳过”,而是“先联网校验再本地加载”。
- Linux/macOS:
export COMPOSER_DISABLE_NETWORK=1 - Windows:
set COMPOSER_DISABLE_NETWORK=1 - 临时生效(推荐 CI 场景):
COMPOSER_DISABLE_NETWORK=1 composer install ...
设完后运行 composer config --global repo.packagist,应返回空或 false;若返回 URL,需先执行 composer config --global repo.packagist false 清除残留配置。
install 命令必须加四个 --no- 参数
即使网络已禁用,Composer 默认仍会触发插件、脚本、自动加载器重建等环节,其中某些行为(如 phpstan 插件初始化、自定义 autoloader 的远程类探测)可能隐式联网或失败。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
--no-plugins:防止扩展安装器类插件发起远程请求 -
--no-scripts:跳过post-install-cmd,避免脚本调用外部 API 或生成配置时中断 -
--no-autoloader:不重建 autoload 映射,绕过某些加载器的运行时远程检查 -
--no-progress(可选但建议):减少输出干扰,加快命令响应
执行完这步后,必须立刻补一记:composer dump-autoload -o,否则运行时大概率报 Class not found —— 这一步不能省,也不在 install 中自动完成。
本地包安装只能靠 path 仓库
composer require vendor/name 在离线环境下必然失败,因为 require 命令默认走网络解析和下载流程,不查本地文件系统。
- 正确做法:在
composer.json中显式声明repositories段,类型为path - 示例:
"repositories": [ { "type": "path", "url": "./packages/my-local-package" } ] - 然后
composer require my-local-package/my-local-package:dev-main才能从本地目录加载
注意:path 仓库路径必须是相对当前 composer.json 的有效路径,且目标目录下必须含合法的 composer.json。
最容易被忽略的是:离线模式下 composer.lock 的哈希校验依然生效,但不再联网比对远程元数据;如果手动改过包内容又没重生成 lock 文件,运行时可能因校验失败而中止 —— 这种情况不会报网络错误,但行为异常。










