配中文镜像不能加速github源码拉取,因其只代理packagist元数据而不托管zip包;必须删除composer.lock和vendor后重装,才能使dist.url更新为镜像或代理地址。

配中文镜像本身不能加速 GitHub 源码拉取——它只代理 packagist.org 元数据,不托管 ZIP 包。真正卡在 Downloading https://codeload.github.com/ 或 https://api.github.com/,说明你还在直连 GitHub。必须组合操作才能间接加速。
为什么换了镜像还是从 github.com 下载?
Composer 的下载分两层:元数据(包名、版本、依赖关系)走镜像源;实际 ZIP 包仍默认从 GitHub 原地址下载。阿里云、清华等镜像不托管 dist 文件,只提供 p2/ 目录下的 JSON 元数据。
-
composer install -vvv日志里出现Downloading https://api.github.com/或https://codeload.github.com/→ 镜像没影响这部分 -
composer.lock里记录的dist.url是原始 GitHub 地址 → 即使镜像配置正确,也会照用旧链接 - 项目级
repositories字段存在(哪怕为空对象{}或空数组[])→ 全局镜像被完全跳过
强制让 Composer 走 GitHub 镜像代理(如 ghproxy)
GitHub ZIP 包无法被 packagist 镜像代理,但可用反向代理服务中转。推荐直接用 ghproxy.com 类服务,无需部署。
批量替换指定目录下所有 Git 仓库的远程地址(remote URL)。 当用户需要将 Git 仓库从一个服务器迁移到另一个服务器时使用。 触发词:git remote 替换、git url 批量修改、git 仓库迁移、更换 git 地址、批量修改 remote url。
- 临时生效:运行
composer config -g github-protocols https(避免 git 协议触发 SSH 问题) - 全局替换 GitHub 下载域名:执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/后,再手动改~/.composer/config.json,加一行:"github-domains": ["ghproxy.com"] - 更稳妥做法:在项目
composer.json的config段加:"config": { "github-protocols": ["https"], "github-domains": ["ghproxy.com"] } - 验证:运行
composer install -vvv | grep Downloading,应看到类似Downloading https://ghproxy.com/https://codeload.github.com/...
删 lock + vendor 是硬性前提,不是可选项
只要 composer.lock 里还存着旧的 dist.url,Composer 就会严格按它下载,无视所有镜像或代理配置。
- 必须执行:
rm -rf vendor composer.lock,再跑composer install -
composer update --lock不够 —— 它只更新 lock 文件里的元数据和依赖树,不刷新已存在的dist.url - CI 环境中尤其注意:缓存
vendor/会导致这个陷阱反复出现;应缓存~/.composer/cache,而非vendor/ - 如果用了
--repository-url=...参数但速度没变,先检查是否漏删了composer.lock
项目级配置别用 composer config repo.packagist 命令
这个命令在项目内执行时,会**全量覆盖** composer.json 中的 repositories 字段,而不是追加。已有私有源、Satis 或 path 仓库会被清空。
- 安全做法:手动编辑
composer.json,在"repositories"数组末尾添加:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果
"repositories"原本是对象(如"repositories": {"packagist": false}),需先转为数组格式,否则 JSON 解析失败 - 确保末尾逗号合法:数组最后一项后不能有逗号,对象最后一个键值对后也不能有逗号
- 改完立刻验证:
composer config -l | grep repositories,确认输出含你填的 URL
最常被忽略的点:镜像配置正确 ≠ 下载变快。真正起效的前提是 composer.lock 里每个包的 dist.url 都指向镜像或代理域名,而这个只能靠删 lock 后重装来重写。任何“配完就跑 install”的做法,在已有 lock 文件时都只是自我安慰。










