composer代理配置必须显式指定端口且协议为http://,否则因curl默认连80端口而静默卡死;windows需管理员权限写入全局配置,或改用项目级配置;代理不通时应先用curl -x直接验证,再排查镜像、证书等问题。

composer config -g http-proxy 端口缺失导致静默卡死
Composer 不会报错提示“端口没写”,而是直接卡在 Loading composer repositories 或抛出 cURL error 7。根本原因是 cURL 底层无法建立 TCP 连接——代理地址形如 http://127.0.0.1(无端口)时,cURL 默认尝试 port 80,但你的代理服务实际监听的是 8080、10809 或其他端口,结果就是连不上、不提示、不重试。
必须显式写出端口,且协议只能是 http://:
-
composer config -g http-proxy http://127.0.0.1:8080✅ -
composer config -g https-proxy http://127.0.0.1:8080✅(注意:https-proxy 也用http://) -
composer config -g http-proxy http://proxy.example.com:3128✅ -
composer config -g http-proxy http://127.0.0.1❌(缺端口) -
composer config -g http-proxy https://127.0.0.1:8080❌(协议错误)
验证是否写入成功:composer config -g http-proxy 必须输出完整 URL;若为空或报错,说明配置根本没存进去。
Windows 下管理员权限缺失导致 proxy 配置失败
在 Windows 上,composer config -g 实际写入的是 %USERPROFILE%\AppData\Roaming\Composer\config.json。如果 CMD 或 PowerShell 没以管理员身份运行,而该目录权限被系统锁定(尤其企业环境或 PhpWebStudy 套件默认安装路径),Composer 会静默跳过写入,不报错也不生效。
检查方法:手动打开 %USERPROFILE%\AppData\Roaming\Composer\config.json,看 http-proxy 字段是否存在;若文件里没有,或字段值为空,大概率是权限问题。
- 以管理员身份运行 CMD/PowerShell 再执行
composer config -g http-proxy ... - 或改用用户级配置(无需提权):
composer config http-proxy http://127.0.0.1:8080(仅对当前项目生效) - 也可手动编辑
config.json,确保 JSON 格式合法,"http-proxy"是顶层键
代理通但 Composer 仍报 Connection refused 的真实原因
看到 Connection refused 或 cURL error 7,第一反应不该是改 Composer 配置,而是确认代理本身是否可达。Composer 只是转发请求,它不负责建连——连不上是系统网络层的事。
用最简命令绕过 Composer 直接测代理:
curl -x http://127.0.0.1:8080 -I https://mirrors.aliyun.com/composer/- 若返回
Failed to connect to 127.0.0.1 port 8080,说明代理进程没起来,或端口被防火墙拦截 - 若返回
HTTP/1.1 407 Proxy Authentication Required,需补认证:composer config -g http-proxy http://user:pass@127.0.0.1:8080 - 若返回 TLS 握手失败(如
SSL certificate problem),不是关secure-http能解决的,得配cafile:composer config -g cafile C:\path\to\company-ca.crt
镜像源和代理同时配置时的 fallback 陷阱
很多人配了代理又配了阿里云镜像,结果 composer install -vvv 里仍看到请求发往 https://packagist.org,以为代理失效。其实更可能是镜像根本没生效,Composer 自动 fallback 到官方源,而你的代理又不允许访问 packagist.org,于是报错。
判断镜像是否真起作用,只看这一行:composer install -vvv 2>&1 | grep -i downloading。第一行下载 URL 必须是你的镜像地址(如 https://mirrors.aliyun.com/composer/p/provider-2025-10%24.json)。
- 若仍是
https://packagist.org,先清缓存:composer clear-cache - 再检查镜像配置是否满足三要素:
repo.packagist键名不能拼错、值必须是 HTTPS + 结尾斜杠、type 字段显式设为composer - 项目级
repositories存在时,全局镜像会被忽略——此时 proxy 仍有效,但镜像得写在项目composer.json里
代理端口写错这事,表面是配置疏忽,背后常混着权限、DNS、镜像、证书四层干扰。每次改完 http-proxy,务必用 curl -x 直接验证,别等 composer install 卡住才回头查。











