composer卡住或报curl error 7最常见原因是代理协议或端口配置错误:http-proxy和https-proxy都必须用http://开头+明确端口(如http://127.0.0.1:7890),填https://或缺端口均被静默忽略;验证需执行composer config -g http-proxy确认输出完整url。

代理配置写错协议或端口,是 Composer 卡住或报 cURL error 7 的最常见原因,不是网络不通,而是配置本身被静默忽略。
composer config -g http-proxy 和 https-proxy 必须都用 http:// 开头
Composer 不接受 https:// 协议的代理地址,哪怕你的代理服务监听在 HTTPS 端口上。它只认 http:// + 明确端口的格式:
-
composer config -g http-proxy http://127.0.0.1:7890✅ -
composer config -g https-proxy http://127.0.0.1:7890✅(注意:仍是http://) -
composer config -g http-proxy https://127.0.0.1:7890❌ 静默失败 -
composer config -g http-proxy http://127.0.0.1❌ 缺端口,同样静默失败
验证是否生效:运行 composer config -g http-proxy,输出必须是完整 URL 字符串;若为空、为 null 或报错,说明没写对。Windows 用户需管理员权限运行 CMD 才能写入全局配置。
代理通但 Composer 还是卡在 Loading composer repositories
这通常不是代理本身问题,而是镜像源配置失效,导致 Composer fallback 到 https://packagist.org,而你的代理可能不允许直连该域名。
- 先运行
composer config -g repo.packagist,确认输出是类似{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}的 JSON 对象 - 键名必须是
repo.packagist(不能是repos.packagist或packagist.org) -
type值必须显式传composer,漏掉就整条被忽略 - URL 必须以
/结尾,否则拼路径变成/composerpackages.json→ 404 - 项目级
composer.json中若存在"repositories"字段(哪怕空数组),全局镜像会被跳过
验证真实请求地址:加 -vvv 参数跑 composer install,看日志第一行是不是你配的镜像 URL。如果不是,先修镜像,再谈代理。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
curl -x 能通,但 composer install 卡死
说明代理能转发 HTTP,但没正确处理 HTTPS CONNECT 隧道 —— Composer 默认所有仓库走 HTTPS,如果代理不支持或未启用 CONNECT,请求会直接失败或 fallback 直连。
- 临时关掉代理再试
composer install,如果立刻开始下载,就是代理 HTTPS 支持没开 - Clash 用户检查 Profiles → Rule 是否把
mirrors.aliyun.com或packagist.org错标为 DIRECT - Charles/Fiddler 类工具需开启 SSL Proxying,并将根证书导入系统/PHP 的 CA store
- 某些代理会篡改响应体(比如加 chunked 编码、缓存 ZIP 包),导致
hash verification failed,这不是 Composer bug,是代理污染了二进制流
绕过验证可临时执行:composer config -g secure-http false + composer config -g cafile /dev/null,但仅限调试,切勿留生产。
系统级 HTTP_PROXY 环境变量对 Composer 无效
Composer 完全不读取 HTTP_PROXY 或 HTTPS_PROXY 环境变量,它只认自己配置的 http-proxy 和 https-proxy。如果你在终端里 export 了代理变量,却没用 composer config 设置,那等于没配。
- Linux/macOS 下设环境变量后仍失败?说明 Composer 没读它 —— 必须用
composer config -g http-proxy ... - 宝塔面板里用 www 用户执行命令,你在 root 下配的全局配置,www 根本读不到
- Docker 或 CI 环境中,
~/.composer/config.json可能根本不存在,composer config -g实际写到了容器内某个不可见路径
真正起效的永远只有 composer config -g 写入的配置,且必须验证输出,不能只看命令是否“没报错”。










