Composer config -g repo.packagist常失效,主因是键名拼错(如repos.packagist)、URL缺末尾斜杠、或用户权限不匹配(如root配置但www用户运行),验证需看composer config -g repo.packagist输出是否为完整JSON。

不配中文镜像,composer create-project 基本跑不完——不是你网差,是 packagist.org 在国内根本连不上。
为什么 composer config -g repo.packagist 总是不生效?
这条命令静默失败的概率远高于成功。常见原因有三个:
-
repo.packagist拼错成repos.packagist(多一个 s),命令不报错但写入无效字段 - URL 末尾漏了斜杠:
https://mirrors.aliyun.com/composer❌,必须是https://mirrors.aliyun.com/composer/✅ - 你在 root 用户下执行,但宝塔、Docker 或 CI 实际用的是
www或runner用户,读不到 root 的~/.composer/config.json
验证是否真生效,只看这一句输出:composer config -g repo.packagist。如果返回空、null 或仍是 https://packagist.org,说明没写进去,别往下试了。
项目级配置比全局更稳,尤其适合 ThinkPHP 新建项目
进到你要初始化的目录(比如准备放 tp-demo 的空文件夹),直接运行:
立即学习“PHP免费学习笔记(深入)”;
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
这条命令会自动在 composer.json 里加 repositories 字段,不用手写 JSON,不怕格式错误。注意:
- 如果项目还没
composer.json(比如新建前),先跑composer init或直接composer create-project topthink/think .再配 - 已有
"repositories": [](空数组)?命令会报错,得先手动改成"repositories": {}(空对象) - 千万别写
"packagist": false,否则镜像挂了整个安装就崩
composer install 还卡在 Downloading?删 vendor 和 lock 文件再重来
镜像配对了,但旧 composer.lock 里记录的是 packagist.org 的 hash 和路径,和阿里云镜像元数据不匹配,就会反复校验失败或降级回源。
务必执行这两步:
-
rm -rf vendor composer.lock(Windows 用rd /s/q vendor+ 手动删composer.lock) - 再跑
composer install(不是update),让 Composer 重新拉取元数据并生成适配镜像的新 lock 文件
如果仍慢,检查 php -m | grep -E 'openssl|zlib' —— 缺这两个扩展,HTTPS 下载直接失败,跟镜像无关。
临时验证镜像是否可用,别改任何配置
怀疑当前镜像地址失效?或者想快速对比阿里云和清华源速度?直接加参数跑一次:
composer create-project topthink/think tp-demo --repository-url=https://mirrors.tuna.tsinghua.edu.cn/composer/
这个 --repository-url 只影响当次命令,关掉终端就消失,适合排查。注意:
- 不能和
-g混用,参数优先级高于全局配置 - URL 必须带协议和末尾斜杠,否则报
Invalid repository type - 若提示
GithubRateLimitException,说明某依赖硬编码了 GitHub 地址,得配 GitHub Token:composer config -g github-oauth.github.com your_token_here
真正麻烦的从来不是选哪个镜像,而是配完不验证、删了 vendor 不清 lock、用错用户权限还反复重装——这些动作一错,后面所有操作都白费。



















