离线安装Composer包失败主因是未切断所有联网路径,必须设COMPOSER_DISABLE_NETWORK=1并执行composer install --no-interaction --no-plugins --no-scripts --no-dev --optimize-autoloader,再运行composer dump-autoload -o;vendor存在仍失败是因默认校验远程元数据且无法跳过,除非彻底禁用网络通路与fallback源。

离线安装 Composer 包失败,90% 是因为没切断所有联网路径,不是 vendor 没拷全,也不是 lock 文件不对。
composer install 离线报错 Connection refused 或 Could not fetch
错误根源不在文件缺失,而在 Composer 默认行为:即使 vendor/ 已存在、composer.lock 完整,它仍会主动请求远程元数据(比如校验包哈希、确认版本是否存在)。这个步骤无法跳过——除非你显式禁用所有触发路径。
-
COMPOSER_DISABLE_NETWORK=1是硬性前提,不设它,所有--no-xxx参数都无效 - 全局残留
repo.packagist配置会导致 fallback 校验,必须运行composer config --global repo.packagist false彻底禁用 -
composer.lock中含"source"类型条目(如"dev-master"或 Git URL),离线时无法校验,install必然失败 - 项目
composer.json里写了"repositories": [{"type": "packagist", "url": false}],在COMPOSER_DISABLE_NETWORK=1下也会直接退出,不是静默忽略
离线部署必须执行的 install 命令组合
这组参数不是“可选优化”,而是防止意外联网的强制防护。前提是:vendor/ 已存在、composer.lock 未改动、PHP 版本和必需扩展(mbstring、openssl、zlib)完全一致。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
composer install --no-interaction --no-plugins --no-scripts --no-dev --optimize-autoloader-
--no-plugins:跳过插件初始化,避免phpstan/extension-installer等隐式联网 -
--no-scripts:屏蔽post-install-cmd,防止脚本调用外部 API 或生成前端资源 -
--optimize-autoloader:强制重建vendor/autoload.php,避免残留旧路径导致Class not found
直接复制 vendor 目录行不行?
可以,但有硬性前提:
-
vendor/必须和目标机的 PHP 版本完全一致(如 8.2.12 vs 8.2.13 可能因内部 API 微变导致Class not found) - 所有扩展必须已启用:目标机需提前装好
mbstring、openssl、curl等,否则autoload.php加载失败 -
composer.lock必须一并拷贝,且不能被修改;否则composer install会尝试重算依赖 - 含
bin/脚本的包(如phpunit)要求目标机php在$PATH中,且路径与源环境一致
离线安装前最容易被忽略的三件事
第一是没清掉全局 repo.packagist 配置,第二是没验证 composer.lock 是否含 Git source 条目,第三是没确认目标机 php -v 和 php -m 输出是否与源环境严格一致——这三个点任何一个出问题,composer install 就会在离线时突然卡住或报错,且错误信息不指向真实原因。

















