composer 报错“failed to connect to 127.0.0.1 port 8888”主因是代理配置残留,需依次清除 composer 全局配置(加 --global)、环境变量、windows 注册表及 ide 内置代理设置,并执行 composer clear-cache && composer diagnose 验证。

Composer 报 “Could not resolve host” 或 “Failed to connect to 127.0.0.1 port 8888” —— 很大概率是代理配置残留,且优先级混乱。直接删环境变量不管用,必须先清 Composer 自己的全局配置。
composer config --unset 不加 --global 就等于没删
很多人运行 composer config --unset http-proxy 后发现错误照旧,因为这条命令只删当前项目目录下的 composer.json 里可能存在的 proxy 字段(极少存在),对全局无效。Composer 的代理行为由三处控制:环境变量、注册表(Windows)、composer config --global 配置。其中全局配置优先级最高。
- 必须加
--global才能真正影响所有项目:composer config --global --unset http-proxy和composer config --global --unset https-proxy - 键名严格区分大小写和连字符:
http-proxy≠httpproxy≠proxy.http - 删完后用
composer config --global --list确认输出里已无这两项
环境变量里的 http_proxy 和 https_proxy 也要检查
即使 Composer 全局配置已清空,如果 shell 环境里还留着 http_proxy,某些 PHP curl 封装层仍可能读取并尝试使用它——尤其在 CI 或 Docker 场景下容易被忽略。
- macOS/Linux:运行
env | grep -i proxy,看到输出就说明还在生效 - PowerShell(Windows):运行
Get-ChildItem Env: | Where-Object Name -like "*proxy*" - 临时清除(仅本次命令有效):
http_proxy= https_proxy= composer install - 永久清除需修改 shell 配置文件(如
~/.bashrc、~/.zshrc)或 Windows 系统属性 → 环境变量界面
Windows 用户别漏了注册表里的代理键值
部分 Windows 安装流程(尤其是某些 IDE 自带安装器)会把代理写进注册表,Composer 启动时可能读取到,导致 config --global --unset 也无效。
- 打开
regedit,定位到HKEY_CURRENT_USER\Software\Environment - 查找名为
http_proxy或https_proxy的字符串值,直接删除 - 若不存在该路径,不用新建;存在但值为空,也建议删掉,避免干扰
- 改完注册表后,**必须重启终端或 PowerShell 窗口**,否则环境变量不会刷新
IDE 内置终端可能自带代理设置
PhpStorm、VS Code 的集成终端有时会继承 IDE 自身的 HTTP 代理设置(Settings → Appearance & Behavior → System Settings → HTTP Proxy),这个设置和系统、Composer 都无关,但会让 composer install 始终走错通道。
- 在 IDE 中关闭代理设置,或切换为 “No proxy” 模式
- 更稳妥的做法:关掉 IDE 终端,打开系统原生 Terminal / PowerShell / cmd 再试
- 验证方式:在 IDE 终端里运行
echo $http_proxy(Linux/macOS)或$env:http_proxy(PowerShell),看是否非空
真正麻烦的不是删不掉,而是删不全——环境变量、注册表、IDE 设置、Composer 全局配置,四者只要有一处残留,就可能让 curlerror7 或 Could not resolve host 反复出现。每次清理后,务必执行 composer clear-cache && composer diagnose,看输出里 “HTTP proxy” 是否彻底消失。











