执行 composer config http-proxy 写入当前项目 composer.json;全局配置需加 --global 参数,且须同时设置 https-proxy 才能代理 https 请求。

composer config http-proxy 会写进哪个配置文件?
执行 composer config http-proxy http://127.0.0.1:8080 默认写入当前项目的 composer.json,不是全局配置。想全局生效,必须加 --global 参数:composer config --global http-proxy http://127.0.0.1:8080。否则换个项目就失效,还容易误以为代理没起作用。
HTTP代理地址带认证时怎么填?
用户名密码要 URL 编码,尤其含 @、/、: 等字符时。比如密码是 pa@ss:word,得先编码成 pa%40ss%3Aword,再拼成 http://user:pa%40ss%3Aword@127.0.0.1:8080。直接填原始密码会导致解析失败,报错 Invalid URI supplied 或静默跳过代理。
- 推荐用
php -r "echo rawurlencode('your_password');"快速编码 - 如果代理本身不校验认证,但地址里有
@(比如域名含@),也得编码,否则 Composer 会把第一个@当作用户/密码分隔符
HTTPS 包依赖走不了 HTTP 代理?
Composer 默认只对 HTTP 协议请求走 http-proxy,而 Packagist 和大多数仓库用 HTTPS。必须额外设置 https-proxy:composer config --global https-proxy http://127.0.0.1:8080。漏掉这行,composer install 仍会卡在 “Loading composer repositories”,实际请求被系统直连拦截或超时。
- 注意:即使代理服务本身支持 HTTPS,这里值仍填
http://开头(除非代理明确要求 CONNECT 隧道 + TLS 终止) - 某些企业代理强制 HTTPS 拦截,需额外信任其 CA 证书,否则报
cURL error 60: SSL certificate problem
代理配置后依然超时或连接拒绝?
先确认代理服务确实在运行且监听正确地址端口,再检查 Composer 是否读到了配置:composer config --global --list | grep proxy。常见干扰项:
- 系统环境变量
HTTP_PROXY/HTTPS_PROXY与 Composer 配置冲突,优先级更高,建议统一用其中一种方式 - 代理服务未开启对
packagist.org或 GitHub 的访问权限(尤其内网代理) - Windows 下路径大小写不敏感但代理地址中协议名必须小写(
http://,不是HTTP://),否则部分版本会忽略
复杂点在于代理链路里任何一环(本地代理进程、防火墙、中间网关)出问题,现象都一样:没报错,只是卡住。得逐层 curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json 验证才准。










