Composer install卡在Resolving dependencies实为代理配置错误:Composer仅识别http-proxy和https-proxy字段,且https-proxy必须为http://开头、两者需同时存在并格式正确,否则静默fallback直连;应优先切腾讯云等国内镜像源并验证配置生效。

composer install卡在Resolving dependencies,其实是代理没配对
Composer 默认完全忽略 HTTP_PROXY 和 HTTPS_PROXY 环境变量,只认自己配置里的 http-proxy 和 https-proxy 两个字段——而且必须同时存在、协议一致、URL格式正确,缺一不可。
常见现象是执行 composer install 后卡在 Resolving dependencies 或 Loading composer repositories,终端无报错、无超时提示,实际请求已 fallback 到直连,最终静默失败。
-
http-proxy只处理纯 HTTP 请求(极少用),对https://packagist.org这类 HTTPS 源完全无效 -
https-proxy的值必须是http://开头(不是https://),哪怕你的代理监听的是 TLS 端口,这是 Composer 的硬性约定 - 如果代理需要认证,密码含
@、/、:,必须用rawurlencode()编码,例如pa@ss/word→pa%40ss%2Fword - Windows 下若报
Could not write to file,检查%APPDATA%\Composer\config.json是否存在且有写权限
腾讯云服务器上别急着配代理,先切镜像源
你在腾讯云 CVM 上跑 composer install 卡住,大概率不是网络不通,而是 DNS 解析慢或 HTTPS 握手卡在海外节点。直接切腾讯云官方镜像,比配代理快且稳定。
执行这条命令即可生效:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
然后立刻清缓存:
composer clear-cache
验证是否生效:
composer show laravel/framework --no-ansi | head -n 3
看到 URL 含 mirrors.cloud.tencent.com 就说明成功了。
- URL 末尾的
/不能少,少了会报Invalid repository type - 如果项目根目录
composer.json里写了repositories字段,它会覆盖全局配置,得先删掉或注释掉 - 公司内网或 CI 环境下,阿里云、华为云等镜像站也已提供完整同步,走内网直连更可靠
https-proxy 填错的典型现象和修复
填成 https://127.0.0.1:8080 或漏协议头(如 127.0.0.1:8080)会导致静默失败:没有错误提示,但所有 HTTPS 请求都 fallback 到直连,最终超时或返回 502。
正确写法永远是:
composer config -g http-proxy http://127.0.0.1:8080<br>composer config -g https-proxy http://127.0.0.1:8080
验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy"
输出里必须两行都存在,且 URL 格式正确。
- 代理进程未启动、端口填错、防火墙拦截,都会表现为连接拒绝;可用
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json手动验证 - 公司用 NTLM 代理(如 Windows 域环境),Composer 原生不支持,必须引入中转工具如
cntlm或px,让它们监听127.0.0.1:3128并处理认证 - 旧版 Composer(socks5://,若用 Clash TUN 模式,需确认版本
代理配好了还是慢?排查链路比重试更重要
现象一致(卡住、超时、无报错),但原因可能在任意一层:本地代理进程未启动、防火墙拦截、CA 证书不被信任、甚至 DNS 被污染。Composer 日志里不会直接说“代理连不上”,而是表现为 TLS 错误或超时。
-
file_get_contents(): SSL operation failed→ 代理未正确转发 TLS 流量,或本地 CA 证书不被信任;换用http://代理可绕过此问题 -
Connection refused或No route to host→ 代理进程没开、端口填错、或防火墙拦截 -
composer create-project仍慢 → 这个命令内部也会访问https://repo.packagist.org/packages.json,检查是否漏配https-proxy - CI 环境下建议优先用镜像而非代理,避免因代理服务不稳定导致构建失败
最常被忽略的是:配了代理却没关掉默认源,或者镜像 URL 少了个 /,结果 Composer 静默 fallback 到 packagist.org 直连——这种问题不会报错,只会让你反复怀疑代理本身。


















