取消 Composer 代理需全局执行 unset 命令——composer config --global --unset http-proxy 和 https-proxy,并检查环境变量、Windows 注册表及 IDE 设置,最后用 composer diagnose 验证。

直接结论:取消 Composer 代理配置,只需一条命令即可生效——但必须确认作用域是全局(--global),否则可能白操作。
确认代理是否真在起作用
很多人以为删了系统环境变量就完事了,其实 Composer 会优先读取自己的全局配置,哪怕 http_proxy 环境变量为空,它仍可能从 ~/.composer/config.json(Windows 是 %APPDATA%\Composer\config.json)里加载代理。先验证:
- 运行
composer config --global --list,查找是否有http-proxy或https-proxy字段 - 同时检查环境变量:
env | grep -i proxy(macOS/Linux)或Get-ChildItem Env: | Where-Object Name -like "*proxy*"(PowerShell) - 若两者都存在,以 Composer 全局配置为准;只清环境变量,代理照常走
正确删除代理配置的命令写法
composer config --unset 默认只删当前项目配置,对全局无效——这是最常踩的坑。取消代理必须加 --global:
- 清除 HTTP 代理:
composer config --global --unset http-proxy - 清除 HTTPS 代理:
composer config --global --unset https-proxy - 如果不确定键名是否准确,先用
composer config --global --list确认输出中是否存在对应字段 - 注意大小写和层级:
http-proxy≠httpproxy,也≠proxy.http
代理残留的隐藏位置与清理建议
即使删了 Composer 配置,某些场景下代理仍可能“复活”:
- Windows 注册表里可能存有代理键值:
HKEY_CURRENT_USER\Software\Environment下的http_proxy字符串项(需手动删) - PHP CLI 的
php.ini中若设置了curl.cainfo或openssl.cafile指向错误证书路径,也可能被误判为代理失败 - 某些 IDE(如 PhpStorm)自带终端会继承其内部代理设置,重启 IDE 或切换到系统原生命令行再试
- 执行
composer clear-cache后再跑composer diagnose,确认输出中不再显示 “HTTP proxy: …”
临时绕过代理的应急方法
不想动配置?可以用环境变量前缀“屏蔽”代理,仅本次命令生效:
- macOS/Linux:
http_proxy= https_proxy= composer install - Windows PowerShell:
$env:http_proxy=""; $env:https_proxy=""; composer install - 注意:
no_proxy不影响此方式,且不会修改任何持久化配置,适合调试或 CI 场景
真正彻底取消代理,不是“删一次就完”,而是查清来源(环境变量 / 注册表 / Composer 配置)、删对位置(--global 不可省)、再验证结果(composer diagnose)。最容易被忽略的是 Windows 注册表残留和 IDE 终端继承行为——它们不响应 composer config 命令,得手动处理。










