答案是必须先解决DNS解析失败问题,再处理镜像配置;运行ping或nslookup验证mirrors.aliyun.com是否返回IP,无响应即为DNS故障,此时换源、清缓存均无效,需改DNS、绑定hosts或用curl --resolve直连验证。

“Could not resolve host”先查DNS,不是换镜像的事
域名根本解析不了,换什么镜像都没用。Composer 卡在 Could not resolve host,说明 curl 连 mirrors.aliyun.com 这类域名时连 DNS 查询都失败了。
- 运行
ping mirrors.aliyun.com:返回unknown host→ 确认是 DNS 层问题 - 运行
nslookup mirrors.aliyun.com 8.8.8.8:无ANSWER SECTION→ 本地 DNS 服务器不响应 - 运行
dig mirrors.aliyun.com @1.1.1.1 +short能出 IP,但不用它就查不到 → 当前 DNS(如运营商默认)被污染
这时候改 composer.json、清缓存、重装 Composer 全无效——必须让系统能解析出镜像域名的 IP。
验证镜像 URL 是否拼写正确且生效
配置写了 ≠ 镜像真在用。Composer 2.2+ 只认 repositories.packagist.org 这个键名,旧写法如 repo.packagist 或 repos.packagist 全部静默忽略。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer config -g repositories.packagist.org.url,输出必须是带斜杠的完整 HTTPS 地址,例如https://mirrors.aliyun.com/composer/ - 末尾少一个
/,请求会变成/composerp2/xxx.json→ 404 - 清华源地址必须含
/composer/:错写成https://mirrors.tuna.tsinghua.edu.cn/或https://mirrors.tuna.tsinghua.edu.cn/composer都不行 - 已下线源如
https://packagist.phpcomposer.com返回 HTML,curl -I看状态码不是200 OK就别再用
确认流量是否真的走镜像,而非 fallback 到 packagist.org
即使配置对了,缓存没清或项目级 repositories 覆盖也会导致实际仍直连海外。
- 执行
composer install -vvv | grep -i "mirrors\|packagist",看到mirrors.aliyun.com才算真走镜像 - 若只看到
packagist.org,检查项目根目录下composer.json是否有"repositories"字段,它会覆盖全局配置 - 手动删缓存目录:
rm -rf ~/.composer/cache/repo/https---packagist.org/(Linux/macOS)或%APPDATA%\Composer\Cache\repo\https---packagist.org\(Windows) - 临时绕过项目配置测试:
composer install --repository=https://mirrors.aliyun.com/composer/ -v
镜像返回 HTML 而非 JSON?立刻 curl 检查响应体
报 JSON decode error 或 Unexpected token <,大概率是镜像返回了 HTML 页面(502、登录页、劫持页),而不是预期的 JSON 数据。
- 从报错日志里提取具体 URL(如
https://mirrors.aliyun.com/composer/p/monolog/monolog.json) - 运行
curl -sS https://mirrors.aliyun.com/composer/p/monolog/monolog.json | head -n1,看开头是不是{;如果是<!DOCTYPE或<html→ 镜像服务异常或被污染 - 用
curl -I查响应头:Content-Type: application/json才正常;若为text/html,说明镜像挂了或 DNS 被劫持 - 此时切备用镜像最有效:如华为云
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
真正卡住的地方,往往不是你改了哪行配置,而是 DNS 没通、URL 少了个斜杠、缓存目录里还躺着三个月前的 packages.json。这些点漏掉一个,镜像就形同虚设。

















