全局配置必须用 composer config --global 命令修改,漏掉 --global 会导致仅影响当前项目;Composer 2.0+ 镜像应设为 repos.packagist.org.url,旧写法 repos.packagist 已失效。

Composer 全局配置文件默认位于 ~/.composer/config.json(Linux/macOS)或 %APPDATA%\Composer\config.json(Windows),但直接编辑它容易出错——推荐用 composer config 命令操作。
全局 config 配置项该用哪个命令改
所有全局配置必须加 --global 标志,否则只影响当前项目目录下的 composer.json。漏掉这个参数是 90% 的“改了没生效”问题根源。
-
composer config --global repo.packagist composer https://packagist.phpcomposer.com(已弃用,仅作示例) -
composer config --global repos.packagist.org.url https://packagist.org(新版镜像设置方式) -
composer config --global github-oauth.github.com "your_token_here"(设置 GitHub Token) -
composer config --global bin-dir /usr/local/bin(修改可执行文件安装路径)
为什么不能直接改 ~/.composer/config.json
手动编辑有三个风险:JSON 格式错误导致后续所有 composer 命令报错;权限问题(尤其在 Docker 或 root 环境下);某些配置项(如 repos)结构嵌套深,手写易错。命令行操作会自动校验并格式化。
- 执行
composer config --global --list可安全查看当前全部全局配置 - 执行
composer config --global --unset repos.packagist.org比手动删 JSON 字段更可靠 - 如果已手改出错,运行
composer diagnose会明确提示Invalid config file和具体行号
repos 镜像配置在 Composer 2.0+ 的写法变化
Composer 2.0 起废弃了 packagist 伪仓库名,统一用 packagist.org 作为官方源标识。旧教程里写的 repos.packagist 在新版本不生效。
- 正确写法:
composer config --global repos.packagist.org.url https://mirrors.aliyun.com/composer/ - 错误写法:
composer config --global repos.packagist.url ...(会被忽略) - 若想禁用 packagist.org,需设为
false:composer config --global repos.packagist.org false - 多个镜像?只能配一个
packagist.org,其他需用repositories手动声明,且优先级低于 packagist.org
真正麻烦的是多用户共享环境(比如 CI 机器)下 --global 配置和 COMPOSER_HOME 环境变量的叠加行为——这时候别碰 config.json,老实用 composer config --global 并确认 COMPOSER_HOME 指向预期路径。










