直接换DNS或切国内镜像可解决90%的“Could not resolve host”问题,本质是系统级域名解析失败;应优先检查并更换DNS、配置阿里云镜像源、清除缓存、排查代理及hosts干扰。

直接换 DNS 或切国内镜像,90% 的 “Could not resolve host” 问题当场消失。这不是 Composer 本身的问题,而是系统级域名解析失败,别在 composer.json 里瞎调参数。
检查并更换 DNS 服务器
运行 ping repo.packagist.org,如果返回 “未知主机” 或 “Name or service not known”,说明系统根本没拿到 IP。这时候改 /etc/resolv.conf(Linux/macOS)或网络适配器的 DNS 设置(Windows)最有效。
- 临时测试:加一行
nameserver 8.8.8.8到/etc/resolv.conf(Linux/macOS),Windows 改为手动 DNS 并填8.8.8.8和8.8.4.4 - 别用运营商默认 DNS——尤其校园网、某些企业出口,常会静默劫持或缓存污染
- 改完立刻试
composer update,不需重启终端或重装 Composer
强制使用国内镜像源
即使 DNS 正常,repo.packagist.org 在国内直连也极不稳定,超时后常被误报为解析失败。用阿里云镜像能绕过所有海外链路。
- 执行:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 紧接着清缓存:
composer clear-cache,否则旧的失败记录可能干扰新请求 - 验证是否生效:运行
composer config -g repos.packagist,输出应为镜像 URL,不是原始地址
排查代理和 hosts 干扰
代理变量或 hosts 绑定错误,会导致 Composer 看似“连不上”,实则发到了错地方。
- 检查是否意外启用了代理:
echo $HTTP_PROXY和echo $HTTPS_PROXY,非空就危险;用unset HTTP_PROXY HTTPS_PROXY临时关掉 - 查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows):删掉所有指向repo.packagist.org、github.com的静态 IP 行,它们极易过期 - 防火墙/杀毒软件有时会拦截 CLI 工具的 DNS 请求,临时禁用测试一次就知道
真正麻烦的是 DNS + 代理 + hosts 三者叠加出问题,比如公司网络既设了代理又改了 hosts 还锁死了 DNS。这种时候别硬调,优先用镜像源保功能,再逐项关组件定位根因。











