composer config --global --list 仅显示用户手动设置的全局配置项,不包含默认值、环境变量或 auth.json 中的凭据;需逐项查值、确认来源文件并运行 composer diagnose 交叉验证真实生效配置。

composer config --global --list 只显示你亲手设过的项
它不是“Composer 全局配置说明书”,而是你执行过 composer config --global key value 的操作快照。没手动设过,哪怕 cache-dir 或 sort-packages 有默认值,也不会出现在输出里。
常见误判:看到 --list --global 没输出 cache-dir,就以为没配——其实可能只是沿用默认路径(Linux/macOS 是 ~/.cache/composer,Windows 是 %LOCALAPPDATA%\Composer\Cache)。
查具体键值比扫列表更可靠:
-
composer config --global cache-dir:有输出说明已显式设置;空或报错说明走默认 -
composer config --global repositories.packagist.org.url和composer config --global repositories.packagist.url都要试一遍,v2 推荐前者,但旧式后者仍可能生效 -
composer config --global --source github-oauth.github.com:返回类似~/.config/composer/auth.json,说明凭据存在哪
全局配置文件真实路径不能猜,必须用命令确认
新版 Composer(2.x)只读 config.json,不认 composer.json;该文件默认不存在,首次运行 composer config --global(哪怕不带键值)才会生成。
很多人直接去 ~/.composer/composer.json 或 %USERPROFILE%\AppData\Roaming\Composer\composer.json 找,那是旧版残留或误建的文件。
最可靠方式:
-
composer config --global --list:第一行输出的Global configuration file就是当前生效的完整路径,例如/home/alice/.config/composer/config.json或C:\Users\Alice\AppData\Roaming\Composer\config.json -
composer global config home --absolute:只看config.json所在父目录,不依赖配置是否已初始化,更轻量 -
echo $COMPOSER_HOME(Linux/macOS)或echo %COMPOSER_HOME%(Windows):环境变量可能被覆盖,--list输出的路径才是实际加载位置
环境变量会隐身覆盖配置,--list 完全不体现
COMPOSER_REPO_PACKAGIST、COMPOSER_CACHE_DIR、COMPOSER_AUTH 这类环境变量优先级最高,能绕过所有配置文件,但 composer config --global --list 根本不会显示它们。
漏掉这步,镜像源改了却没生效、缓存路径查着对却写不进,都是常态。
验证是否存在干扰:
- Linux/macOS:
echo $COMPOSER_REPO_PACKAGIST、echo $COMPOSER_CACHE_DIR - Windows:
echo %COMPOSER_REPO_PACKAGIST%、echo %COMPOSER_CACHE_DIR% - 临时禁用测试:
COMPOSER_REPO_PACKAGIST= composer diagnose(Linux/macOS),看 Repo packagist.org 行是否变回官方地址
最终生效配置得靠 composer diagnose 交叉验证
composer diagnose 是唯一能告诉你“此刻 Composer 实际行为”的命令。它不读配置快照,而是检查运行时真实路径、网络连通性、权限和最终叠加结果。
重点关注:
-
Cache directory:这才是真实缓存路径,比composer config cache-dir更权威 -
Repo packagist.org:显示最终请求的镜像 URL,不受--list是否漏字段影响 -
GitHub API token和github-oauth:诊断会提示凭据是否可被识别和使用
真正容易被忽略的是「配置叠加顺序」和「环境变量隐身覆盖」——--list --global 只是快照,不是真相。查具体键、盯来源、验 diagnose 输出,三步缺一不可。











