Composer下载失败主因是镜像配置错误:键名必须为repositories.packagist.org(非repos.packagist)、type值须显式声明为composer、URL末尾必须带/,三者缺一不可;验证需用composer diagnose查Repo行或-vvv看实际请求域名。

Composer 下载失败,八成是镜像没配对,不是网络差、不是 PHP 坏了、更不是你手速慢——配错一个字母、少个斜杠、用错字段名,composer install 就会安静地退回到 https://packagist.org,连警告都不给你。
为什么 composer config -g repo.packagist 总是不生效
这不是 Composer 抽风,而是三个硬性条件没同时满足:
-
repo.packagist是旧写法(Composer 1.x),2.2+ 推荐用repositories.packagist.org;但无论用哪个,**不能写成repos.packagist(多一个 s)或mirror(官方根本不认)** - 必须显式声明类型:
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}'——漏掉{"type": "composer", ...}结构,就只是存了个字符串,不会被识别为源 - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌;否则拼路径时变成/packages.json→/packages.json,实际请求的是/composer/packages.json,直接 404
怎么验证镜像真在用,而不是“我以为它在用”
别信 composer config -g 的输出是否好看,要看它**实际发出去的请求地址**:
- 运行
composer diagnose,找Repo packagist.org:这一行,后面域名必须是你配的镜像地址(比如mirrors.aliyun.com) - 新建空目录,执行
composer init -n && composer require monolog/monolog -vvv,日志里第一行Downloading https://...的域名要匹配你的镜像 - 如果仍走
packagist.org,立刻检查:composer config repo.packagist(无-g)——项目级配置优先级更高,会完全屏蔽全局设置
当前可用的国内镜像地址(2026 年实测有效)
淘宝镜像已下线多年,清华源公网访问常卡人机验证,以下三个是目前稳定可用的:
- 阿里云:
https://mirrors.aliyun.com/composer/(DNS 快、电信延迟低,末尾斜杠不可省) - 腾讯云:
https://mirrors.cloud.tencent.com/composer/(可用性最高,99.5%,部分地区 DNS 解析略慢) - 华为云:
https://repo.huaweicloud.com/repository/php/(注意不是mirrors.huaweicloud.com,后者自 2026 年起全部 404)
设阿里云为例:composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}'
换源后还是下载失败?先做这三件事
镜像地址对了,不等于万事大吉。真实卡点往往藏在底层:
- 执行
composer clear-cache:缓存里可能还存着旧源的元数据,不清理,请求照发旧地址 - 手动测试连通性:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回200 OK;若报Could not resolve host,说明 DNS 或代理拦截,不是 Composer 的问题 - 检查是否误启用了代理:
composer config -g http-proxy和https-proxy,公司网络或终端残留的代理变量会覆盖镜像逻辑
最常被忽略的是:Windows 下 Git Bash 默认读 %APPDATA%\Composer\config.json,而 PowerShell 可能读 ~/.composer/config.json,--global 写错位置,等于白配。


















