composer配置代理不是可选优化,而是国内/内网环境下能正常运行的前置条件;它不读取http_proxy环境变量,必须用composer config -g显式设置http-proxy和https-proxy,且地址须含协议和端口,漏配任一将导致请求卡死。

composer config 写代理不是“可选优化”,而是国内/内网环境下能跑通的前置条件。不配,composer install 会卡死在 Loading composer repositories,且不报明确错误。
为什么 http_proxy 环境变量没用?
Composer 完全不读取系统级的 http_proxy 或 HTTPS_PROXY 环境变量——这是它和大多数 CLI 工具的关键差异。你设了环境变量,composer diagnose 里照样不显示 “HTTP proxy”,请求也照常直连失败。
- 必须用
composer config --global http-proxy显式写入配置文件(~/.composer/config.json) -
https-proxy必须单独再设一次,值仍用http://协议(比如http://127.0.0.1:7890),不是https:// - 漏配
https-proxy是最常见翻车点:Packagist 全站 HTTPS,只配http-proxy后,packages.json请求仍走直连,表现就是卡住不动
composer config -g 配代理时要注意什么?
全局配置命令本身简单,但参数、协议、认证细节错一个就静默失效:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 代理地址必须带完整协议+端口:
http://127.0.0.1:7890,漏掉http://会报Invalid URI supplied - 含特殊字符的密码(如
@、/、:)必须 URL 编码,例如密码pa@ss/word要写成pa%40ss%2Fword - SOCKS5 代理仅 Composer ≥ 2.2 支持,且要写
socks5://127.0.0.1:7891;旧版只认http:// - 别信“自动检测”——
composer diagnose输出里出现HTTP proxy: ...才算真正生效,否则重配
公司 NTLM 代理或断网环境怎么办?
NTLM 认证代理(常见于 Windows 域环境)Composer 原生不支持,直接配会返回 407 Proxy Authentication Required;完全断网则连代理都不可用:
- NTLM 场景:必须用
cntlm或px在本地起一个免认证 HTTP 代理(如127.0.0.1:3128),再让 Composer 连这个地址 - 断网场景:不能靠删代理解决,得换 artifact 模式——把外网机器上
~/.composer/cache/files/下的 ZIP 包拷进来,composer.json加{"repositories": [{"type": "artifact", "url": "./artifacts/"}]} - 临时验证代理是否通:用
curl -x http://127.0.0.1:7890 -I https://packagist.org/packages.json,成功返回200才可信
怎么确认代理真被清干净了?
很多人执行了 composer config --unset http-proxy 就以为完事,结果发现还是走代理——因为没加 --global,删的是当前项目配置,不是全局的。
- 正确清除命令是:
composer config --global --unset http-proxy和composer config --global --unset https-proxy - 清除后运行
composer config --global --list | grep proxy,输出应为空 - 还要检查环境变量:
env | grep -i proxy(Linux/macOS)或Get-ChildItem Env: | Where-Object Name -like "*proxy*"(PowerShell) - 某些 IDE(如 PhpStorm)终端自带代理设置,重启 IDE 或切到系统终端再试,否则你以为清了,其实 IDE 在背后偷偷转发
curl -x 一层层测,比看日志快得多。










