Composer本地代理配置错误会导致重定向循环,典型表现为cURL error 7或反复Redirecting to http://...,主因是HTTPS请求被降级为HTTP或跳转至本地地址后又302回原URL,形成闭环;常见错误包括仅设HTTP_PROXY未配HTTPS_PROXY、HTTPS_PROXY协议填错、代理不支持CONNECT隧道,或与hosts/DNS劫持叠加引发双重跳转。

HTTP_PROXY 和 HTTPS_PROXY 配置冲突导致重定向循环
本地代理设错最典型的后果是 cURL error 7: Failed to connect 或反复打印 Redirecting to http://...——本质是 Composer 发起 HTTPS 请求(如 https://packagist.org/packages.json),却被代理强制降级为 HTTP,或跳转到本地地址(如 http://127.0.0.1:8080),而该地址又返回 302 跳回原 URL,形成闭环。
常见错误配置:
-
HTTP_PROXY=http://127.0.0.1:8080但没设HTTPS_PROXY:Composer 对 HTTPS 地址会忽略HTTP_PROXY,结果走直连失败 -
HTTPS_PROXY=http://127.0.0.1:8080(用 HTTP 协议配 HTTPS 代理):多数代理工具不支持这种混用,直接拒绝 CONNECT 隧道请求 - 代理监听在
127.0.0.1:8080,但未启用 HTTPS tunnel 支持(如旧版 Squid、未开启 Clash 的DOMAIN-SUFFIX,packagist.org,PROXY规则)
代理与 hosts/DNS 劫持叠加触发双重跳转
当系统同时存在代理 + 错误 /etc/hosts 条目(如 127.0.0.1 packagist.org),问题会更隐蔽:Composer 先被 hosts 强制解析到本地,再经代理转发,而本地服务(比如调试代理)又返回 302 指向原始域名,形成「本地→代理→packagist.org→本地」的死循环。
验证方式:
- 运行
curl -v https://packagist.org/packages.json,观察是否卡在* Connected to或反复出现 - 执行
nslookup packagist.org,确认解析 IP 是否异常(如返回127.0.0.1) - 检查
env | grep -i proxy和cat /etc/hosts | grep packagist(Linux/macOS)或type C:\Windows\System32\drivers\etc\hosts | findstr packagist(Windows)
代理配置优先级高于镜像源,容易掩盖真实问题
即使你已用 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 设好国内镜像,只要环境变量里存在 HTTPS_PROXY,Composer 仍会先尝试走代理发请求——如果代理不可用或不支持 HTTPS 隧道,它根本不会 fallback 到镜像,而是直接报错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
临时绕过代理验证镜像是否生效:
- Linux/macOS:
HTTPS_PROXY= composer install -vvv - Windows CMD:
set HTTPS_PROXY=&& composer install -vvv - 若此时能正常拉取
packages.json,说明问题纯属代理配置不当,而非镜像或网络本身
某些代理工具静默丢弃 HTTPS CONNECT 请求
Clash、Proxifier 等工具若规则未显式放行 packagist.org 或未启用 TLS 透传,会直接丢弃 CONNECT 请求,表现为 cURL error 35: SSL connect error 或超时。这不是 Composer 的 bug,而是代理层协议兼容性问题。
安全排查建议:
- 用
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json直接测试代理是否支持 HTTPS 隧道 - 临时关闭代理工具,改用镜像源:
composer config -g --unset http-proxy+composer config -g --unset https-proxy - 企业内网必须用代理时,导出公司根证书并配置:
composer config -g cafile /path/to/company-ca.crt
实际中,绝大多数“Connection refused”不是 Composer 或 PHP 的问题,而是代理配置与 DNS/hosts 不匹配造成的链路断裂。修复时先清掉所有代理痕迹,再逐项加回,比盲目调参数更可靠。

















