composer config --list 显示的是运行时最终合并后的配置视图,优先级为:项目 composer.json → 全局 config.json → 环境变量,未设置项不显示,默认值和动态计算字段(如 github-protocols)也不体现。
composer config --list 是查看 Composer 当前配置快照最直接的方式,但它显示的不是“所有配置项”,而是当前作用域下 实际生效的配置值(含全局、本地、环境变量叠加结果),且默认不展开嵌套结构。想真正看清配置来源和层级,得配合参数和后续验证。
它输出的是 Composer 运行时最终合并后的配置视图,优先级为:项目根目录 composer.json → COMPOSER_HOME/config.json(通常是 ~/.composer/config.json)→ 环境变量(如 COMPOSER_CACHE_DIR)。但注意:
process-timeout)不会出现在输出里,哪怕有默认值repositories)只显示顶层键,不展开内容;"repositories": [] 可能掩盖了已配置但被覆
盖/禁用的仓库github-protocols)仅在运行时动态计算,--list 不会体现加 --format=json 并配合 jq 或文本搜索,能暴露更多细节:
composer config --list --format=json | jq '.config'
如果只想看某一项,比如确认 cache-dir 实际路径:
composer config cache-dir
这比从 JSON 里手动翻找更可靠。另外,加 --global 可单独查全局配置:
composer config --global --list
--list 默认查当前项目(有 composer.json 时)或全局(无项目时)--global 强制查全局配置,不受当前目录影响--no-plugins 可排除插件注入的配置干扰(有些插件会动态修改 config)常见原因不是命令失效,而是配置被多层覆盖或环境变量劫持:
config.json:如果设置了 COMPOSER_HOME=/tmp/composer,composer config home 就会返回 /tmp/composer,但 --list 输出里可能只写 "home": "\/tmp\/composer",不易察觉composer.json 中的 config 字段若含 null 值(如 "secure-http": null),会被解释为“禁用”,但 --list 可能直接省略该键memory_limit)不影响 config 输出,但会影响 Composer 加载配置的行为——比如内存不足时,--list 可能卡住或报错,而非显示不全真正容易被忽略的点是:Composer 的配置合并逻辑不透明,--list 是结果快照,不是溯源工具。要定位某项配置来自哪里,得用 composer config --list --verbose(部分版本支持)、查各配置文件原始内容,或临时清空环境变量再对比输出。
# php
# http
# 的是
# 默认值
# 就会
# 也不
# 出现在
# 不受
# 只显示
# 想看
# 报错
# format
# NULL
# js
# git
# json
# composer
# github
# 工具
# 环境变量
# 配置文件
# 作用域
# 为什么
# 而非