Composer install卡住、超时或报Connection refused是因国内网络策略拦截packagist.org,应切换阿里云等HTTPS镜像源,确保repo.packagist键名、composer type值、URL末尾带斜杠,并用composer config -g repo.packagist验证生效。

Composer 默认走 HTTPS 协议访问 packagist.org,国内多数企业网络策略会拦截或限速该域名,直接导致 composer install 卡住、超时或报 Connection refused 错误——这不是 Composer 本身问题,而是网络出口策略与源站协议/域名双重限制的结果。
把 packagist.org 换成国内镜像源(最常用且有效)
国内主流镜像(如阿里云、腾讯云、华为云)均提供完整 packagist 镜像,协议一致、结构兼容,只需替换源地址即可。注意:必须用 HTTPS 镜像地址,HTTP 会被 Composer 8+ 版本拒绝。
- 全局替换(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 仅当前项目替换:
composer config repo.packagist composer https://mirrors.tencent.com/composer/ - 验证是否生效:
composer config -g repo.packagist应返回镜像 URL,而非默认https://packagist.org - 某些企业内网 DNS 会劫持
mirrors.aliyun.com,可改用 IP + Hosts 绑定(见下一条)
绕过 DNS 解析失败:手动绑定镜像域名到 IP
部分网络策略会放行 IP 访问但拦截特定域名解析,此时即使配置了镜像源,composer update 仍卡在 DNS 查询阶段。需确认镜像域名真实 IP 并写入本地 /etc/hosts(Linux/macOS)或 C:\Windows\System32\drivers\etc\hosts(Windows)。
- 查 IP(以腾讯镜像为例):
nslookup mirrors.tencent.com或dig +short mirrors.tencent.com - 常见可用 IP(可能变动,建议实时查):
119.29.29.29、182.254.116.116 - 添加 hosts 行:
119.29.29.29 mirrors.tencent.com - 执行
composer clear-cache清除旧 DNS 缓存(Composer 自带 DNS 缓存机制)
禁用 TLS 验证(仅限测试环境,不推荐生产)
极少数企业中间设备会主动替换 TLS 证书,导致 Composer 报 cURL error 60: SSL certificate problem。此时可临时跳过证书校验,但会暴露凭证和包内容风险。
- 临时关闭:
composer config -g secure-http false - 同时需确保镜像源使用 HTTP 协议(如
http://mirrors.aliyun.com/composer/),HTTPS +secure-http false仍会失败 - 该设置影响所有项目,退出前务必恢复:
composer config -g secure-http true - 若公司使用私有 CA,更稳妥做法是把 CA 证书加入系统信任链,再配置
composer config -g cafile /path/to/company-ca.crt
代理配置不生效?检查环境变量与 Composer 内置代理逻辑
很多用户设了 HTTPS_PROXY 环境变量却无效,是因为 Composer 优先读取其内部配置,且对代理协议要求严格。
- 正确设置代理(支持 HTTP/HTTPS/SOCKS5):
composer config -g http-proxy http://127.0.0.1:8080 - 若代理需认证:
composer config -g http-proxy http://user:pass@127.0.0.1:8080 - 代理必须明确指定协议(
http://或https://),127.0.0.1:8080格式会被忽略 - SOCKS5 代理需写全:
socks5://127.0.0.1:1080,且依赖 cURL >= 7.52.0 - 环境变量
HTTP_PROXY/HTTPS_PROXY仅在未配置http-proxy时 fallback 使用
真正卡住的时候,往往不是缺某个命令,而是多个策略叠加:DNS 拦截 + 域名白名单缺失 + TLS 中间人 + 代理协议写错。建议按「镜像源 → hosts 绑定 → 代理配置」顺序排查,每步都用 composer diagnose 验证连通性。别跳步骤,也别信“一键脚本”,网络策略的组合变化比想象中多。


















