composer默认且强制使用https,卡在“loading composer repositories”本质是https请求失败,需同时配置http-proxy和https-proxy(均以http://开头)、调高http.timeout与php default_socket_timeout,并验证代理格式及生效状态。

Composer 本身不走 HTTP 协议,它默认且强制使用 HTTPS —— 所以你不需要“切换”,而是要解决 HTTPS 连不通的问题。 常见的“HTTP 切 HTTPS”误解,实际是本地网络无法完成 HTTPS 请求(比如卡在 Loading composer repositories 或报 cURL error 28),误以为 Composer 还在用 HTTP。
为什么 composer install 会卡在 HTTPS 请求上
Composer 所有仓库(Packagist、GitHub、GitLab)全量走 HTTPS,根本不存在“HTTP 模式”。卡住的本质是:TLS 握手失败、代理不支持 CONNECT 隧道、或 PHP 底层 socket 超时早于 Composer 配置。
- 错误现象:
Loading composer repositories长时间无响应,或最终报cURL error 28: Operation timed out - 不是 DNS 或域名问题——
curl -I https://packagist.org/packages.json能通,但composer install不行,基本锁定在 Composer 自身配置或 PHP 层 - 关键点:Composer 不读取系统
HTTP_PROXY环境变量,必须显式配http-proxy和https-proxy两个字段
https-proxy 必须写成 http:// 开头
哪怕你的代理服务监听的是 HTTPS 端口(如 https://127.0.0.1:8443),https-proxy 的值也必须是 http:// 协议头。这是 Composer 内部路由硬编码决定的:它只用这个字段发起 CONNECT 隧道,协议头写错就静默 fallback 直连。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- ✅ 正确:
http://127.0.0.1:7890(Clash)、http://user:pa%40ss%2Fword@127.0.0.1:8080(含特殊字符需 URL 编码) - ❌ 错误:
https://127.0.0.1:8080、127.0.0.1:8080、socks5://127.0.0.1:1080(Composer 原生不支持 socks) - 验证命令:
composer config -g --list | grep -E "(http|https)-proxy",必须看到两行且格式合规
http.timeout 和 PHP default_socket_timeout 必须协同调高
http.timeout 控制整个 HTTPS 请求生命周期(DNS + TLS + 下载),默认仅 300 秒;但它受 PHP 底层 default_socket_timeout 制约——如果后者是 60,那请求会在 60 秒时被 PHP 强行中断,Composer 根本收不到超时信号。
- 查当前值:
php -i | grep default_socket_timeout - 改 Composer:
composer config -g http.timeout 600 - 改 PHP(需重启 CLI 或 FPM):
default_socket_timeout = 600(写入php.ini) - 临时测试:
COMPOSER_HTTP_TIMEOUT=1200 php -d default_socket_timeout=1200 composer install
比配代理更稳的方案:换国内镜像源
代理依赖隧道稳定性,而国内镜像(如阿里云)直连 CDN,无 CONNECT 隧道环节,成功率高得多。注意 URL 必须以 / 结尾,且 type 显式为 composer。
- 全局配置(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - VPC 内网用户用:
http://mirrors.cloud.aliyuncs.com/composer/(注意是http://,非 HTTPS) - 项目级(CI 安全):
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(不加-g) - 验证是否生效:
composer diagnose输出里应显示Repo packagist is using composer repository.
真正卡在 HTTPS 的时候,别只盯着“怎么切协议”,先确认 https-proxy 字段是否存在、格式是否合法、PHP socket 超时是否拖后腿——这三个点漏掉任何一个,都会让 Composer 在 TLS 握手阶段无声挂起。










