离线安装php依赖必须前置设置composer_disable_network=1,再执行composer install --no-plugins --no-scripts --no-autoloader --no-interaction,最后运行composer dump-autoload -o;否则仍会触发http请求导致失败。

离线免密拉取根本不存在,必须先切断网络通路
“免密拉取”是典型误解——Composer 在离线场景下根本不该尝试“拉取”,任何残留的联网行为都会导致失败。真正要做的不是绕过认证,而是让 composer install 根本不发 HTTP 请求。核心前提是:必须提前设置 COMPOSER_DISABLE_NETWORK=1。不设它,后续所有参数(包括 --no-plugins、--no-scripts)都无效,命令会卡在 Curl error 60 或 Could not resolve host 上。
自动化脚本里怎么写才真离线
以下命令组合不是“可选优化”,是离线执行的最小安全集,缺一不可:
-
COMPOSER_DISABLE_NETWORK=1必须作为环境变量前置,不能只靠--no-network(该参数已被废弃) composer install --no-plugins --no-scripts --no-autoloader --no-interaction- 执行完立刻补
composer dump-autoload -o,否则运行时报Class not found
常见错误:把 COMPOSER_DISABLE_NETWORK=1 写在脚本末尾、或用 export 分行写——某些 shell(如 Alpine 的 ash)不保证环境变量跨命令生效,必须内联写成一行。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
为什么配了镜像源还报 SSL 错误
看到 SSL certificate problem 或 cURL error 60,说明 Composer 仍在发 HTTPS 请求,意味着你没真正禁网。检查三处:
- 运行
composer config --global repo.packagist,输出必须是{"type": "composer", "url": "false"},而不是 URL 或空值 - 确认没有残留全局配置:
composer config --global --unset repos.packagist比直接设false更彻底 - 删掉项目级
composer.json中的repositories字段——离线时它可能 fallback 到镜像地址,触发 TLS 校验
vendor 目录直接复制后还要做什么
即使你把完整 vendor/ 和 composer.lock 拷到目标机,也不能直接运行 PHP 脚本。必须验证并补全两件事:
- PHP 版本和扩展必须严格一致:比如源机是 PHP 8.3.12 +
mbstring,目标机是 8.3.13 或缺openssl,autoload.php就会 require 失败 - 执行
composer dump-autoload -o前,先确认vendor/autoload.php文件存在且可读;若不存在,说明--no-autoloader被跳过,得重跑 install
最易被忽略的点:COMPOSER_DISABLE_NETWORK=1 是进程级开关,它不写入配置文件,也不继承子 shell——在 sh -c "composer install" 这类调用中,必须显式传入,否则失效。










