global config 命令可修改 GitHub OAuth、HTTP Basic 认证、secure-http、notify-on-install 等全局配置项,作用于 ~/.composer/config.json 或 COMPOSER_HOME 指定路径,不影响项目级配置。

global config 命令能改哪些配置项?
Composer 的 global config 实际上操作的是当前用户的全局配置文件(通常是 ~/.composer/config.json),它只影响所有项目中未显式覆盖的设置,比如 github-oauth、http-basic、secure-http 或默认仓库源 repositories。它不会修改项目级的 composer.json,也不会影响 COMPOSER_HOME 路径本身。
常见可设项包括:
-
github-oauth.github.com:用于绕过 GitHub API 限流 -
http-basic.repo.magento.com:私有包仓库认证 -
secure-http:设为false才允许非 HTTPS 包源(不推荐) -
notify-on-install:控制是否在require时弹出通知
如何安全地设置 GitHub OAuth Token?
直接在命令行里用 composer global config github-oauth.github.com 很方便,但会把 token 明文写进 ~/.composer/auth.json(注意:不是 config.json)。这个文件权限必须是 600,否则 Composer 启动时会报错:Warning: auth.json has invalid permissions。
建议分两步操作:
- 先执行
composer global config github-oauth.github.com - 再手动检查并修正权限:
chmod 600 ~/.composer/auth.json - 如果已存在旧 token,重复执行会覆盖;空值可传
null清除:composer global config github-oauth.github.com null
为什么 global config 不生效?常见原因
最常踩的坑是混淆了作用域层级:Composer 配置按优先级从高到低是「命令行参数」→「项目 auth.json」→「项目 composer.json」→「全局 auth.json」→「全局 config.json」。也就是说,哪怕你用 global config 设了 secure-http false,只要某个项目目录下有 composer.json 里写了 "secure-http": true,那该项目仍强制走 HTTPS。
验证当前生效的完整配置,运行:
citySHOP是一款集CMS、网店、商品、系统,管理更加科学快速;全新Jquery前端引擎;智能缓存、图表化的数据分析,手机短信营销;各种礼包设置、搭配购买、关联等进一步加强用户体验;任何功能及设置都高度自定义;MVC架构模式,代码严禁、规范;商品推荐、促销、礼包、折扣、换购等多种设置模式;商品五级分类,可自由设置分类属性;商品展示页简介大方,清晰,图片自动放大,无需重开页面;商品评价、咨询分开
composer global config --list --format=json
注意:该命令只显示全局配置,不合并项目级配置。真要调试某次 install 是否用了你的 token,加 -v 看详细日志更可靠。
COMPOSER_HOME 变更后 global config 还在原位置吗?
不在。Composer 会完全切换配置根目录。比如你设置了 export COMPOSER_HOME="/opt/my-composer",那么 composer global config 就会读写 /opt/my-composer/config.json 和 /opt/my-composer/auth.json,而不是默认的 ~/.composer/。
这意味着:
- 不同
COMPOSER_HOME环境下的全局配置互不干扰 - CI 环境常用此方式隔离缓存与认证(如 GitLab CI 中设
COMPOSER_HOME=$CI_PROJECT_DIR/.composer) - 切环境前务必确认
echo $COMPOSER_HOME,否则可能误配到错误路径
真实项目里,auth.json 的权限、COMPOSER_HOME 的环境变量、以及配置项实际生效层级,三者任何一个出偏差,都会让 token 或镜像配置静默失效——它们不报错,只是悄悄退回默认行为。









