重置DNS比换镜像源更优先,因为“Could not resolve host”90%是DNS层失败,域名无法解析则请求根本发不出;需先用nslookup验证DNS污染,再通过hosts绑定最新IP并刷新缓存彻底解决。

为什么重置DNS比换镜像源更优先
因为 composer install 卡在 Downloading https://packagist.org/packages.json 或直接报 Could not resolve host,90% 是 DNS 层失败,不是源慢或配置错。镜像源再快,域名都解析不出来,请求根本发不出去。先确认 DNS 是否通,比盲目换源、调 timeout、清缓存都快。
用 nslookup 快速验证 DNS 污染
执行这两条命令就能定位问题根源:
-
nslookup packagist.org 1.1.1.1—— 如果返回 IPv4 地址(如137.74.169.73),说明干净 DNS 可解析 -
nslookup packagist.org(不指定 DNS)—— 如果超时或返回*** Can't find packagist.org: Non-existent domain,就是本地 DNS 被污染
只要第一条通、第二条不通,就不用查代理、不用重装 Composer,直接进 hosts 绑定环节。
hosts 绑定必须做对的三件事
这是最稳的落地方式,但三处极易出错:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- IP 必须最新:别用网上搜的旧地址,每次执行
dig packagist.org @223.5.5.5 +short | head -n1拿当前有效 IP - 格式必须严格:Linux/macOS 编辑
/etc/hosts,Windows 编辑C:\Windows\System32\drivers\etc\hosts,写成137.74.169.73 packagist.org(IP 和域名之间只能是空格,不能是 Tab 或中文符号) - 缓存必须刷新:macOS 执行
sudo dscacheutil -flushcache,Windows 执行ipconfig /flushdns,Linux systemd 系统执行sudo systemd-resolve --flush-caches
杀毒软件(如火绒、360)常锁死 hosts 文件,保存失败时务必右键编辑器选“以管理员身份运行”。
换 DNS 服务器本身也得验证生效
改系统 DNS 不等于立刻生效,尤其在 Docker 容器或 CI 环境里:
- 宿主机改了 DNS,Docker 默认仍用
8.8.8.8或继承自 systemd-resolved 的配置,需显式加--dns 223.5.5.5启动容器 - PHP CLI 进程可能缓存 DNS 结果,改完 hosts 或 DNS 后,必须重启 PHP-FPM 或终端会话
- 某些公司网络强制劫持 DNS 请求,即使设了
1.1.1.1,curl -v https://packagist.org仍会显示连到内网 IP —— 此时只能走代理或 hosts 绑定
DNS 优化不是“设完就跑”,关键在验证链路终点是否真走了你指定的解析路径。卡住时看 curl -v 输出里的 Connected to 行,才是唯一可信依据。

















