必须同时配置http-proxy和https-proxy两个字段,缺一则HTTPS请求静默直连导致超时或cURL error 35;https-proxy值须以http://开头,密码含特殊字符需URL编码,且命令必须加-g全局生效。

Composer配代理不是设个环境变量就完事,必须同时写入 http-proxy 和 https-proxy 两个字段,缺一不可——否则所有 HTTPS 请求(包括访问 packagist.org)都会静默 fallback 到直连,最终卡在 Loading composer repositories 或报 cURL error 35。
为什么只配 http-proxy 还是连不上
Packagist、GitHub、Artifactory 等源全量走 HTTPS,而 Composer 对协议路由是硬分离的:http-proxy 只处理 http:// 请求,https-proxy 才负责建立 CONNECT 隧道处理 https://。漏掉后者,请求不会报错,但会超时或被拦截。
-
https-proxy的值必须是http://开头(哪怕代理监听的是 TLS 端口),填https://127.0.0.1:8080或裸地址127.0.0.1:8080都会失效 - 密码含
@、/、:必须 URL 编码,例如pa@ss/word→pa%40ss%2Fword,可用php -r "echo rawurlencode('pa@ss/word');"快速生成 - 命令必须加
-g(全局),否则只写入当前项目composer.json,换目录即失效
全局代理配置的正确写法
别手动改 %APPDATA%\Composer\config.json(Windows)或 ~/.composer/config.json(Linux/macOS),用 composer config 命令最安全。两条命令必须都执行:
composer config -g http-proxy http://127.0.0.1:8080 composer config -g https-proxy http://127.0.0.1:8080
若代理需认证,URL 写成 http://user:pass@127.0.0.1:8080;若代理监听 HTTPS 端口(如 https://127.0.0.1:8443),Composer 不支持,必须换 HTTP 协议的代理地址。
验证是否生效:composer config -g --list | grep -E "(http|https)-proxy",输出里两行都得有值,且格式正确。
腾讯云/CVM 环境下优先换镜像,不是配代理
你在腾讯云服务器上跑 composer install 卡住,大概率不是网络不通,而是 DNS 解析慢或 HTTPS 握手卡在海外节点。直接切官方镜像比配代理更快更稳:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ composer clear-cache
注意三点:
- 键名必须是
repo.packagist(单数,不能拼错) - 中间的
composer是 type 值,不可省略 - URL 末尾的
/不能少,少了会报Invalid repository type
验证:composer show laravel/framework --no-ansi | head -n 3,看到 URL 含 mirrors.cloud.tencent.com 就说明生效了。
NTLM 代理(如 Windows 域环境)怎么办
Composer 原生不支持 NTLM 认证,设了 http-proxy 也会返回 407 Proxy Authentication Required。必须引入中转代理工具,比如 cntlm 或 px,让它们监听 127.0.0.1:3128 并处理 NTLM,再让 Composer 连这个本地地址。
临时验证是否是 NTLM 问题:curl -x http://127.0.0.1:3128 -I https://packagist.org/packages.json,如果 curl 也报 407,说明中转层没配好。
别指望 HTTP_PROXY 环境变量能绕过——Composer 明确忽略它,只认自己的 http-proxy 字段。

















