运行 composer config 默认只显示项目 composer.json 中的 config 字段内容;要查看全部生效配置,需加 --list 参数,加 -g 则仅显示全局配置。

composer config 命令查看当前配置项
直接运行 composer config 不会输出全部配置,它默认只显示当前项目 composer.json 中的 config 字段内容(如果存在)。要查全局或所有生效配置,必须加 -g 或 --list 参数。
-
composer config --list:列出当前作用域(项目级)所有生效配置项及其值(含继承自全局的) -
composer config -g --list:仅列出全局配置(存于~/.composer/config.json) -
composer config --list --format=json:以 JSON 格式输出,方便脚本解析
config 配置项的作用域与优先级
Composer 配置有三层:命令行参数 > 项目 composer.json > 全局 config.json。同名配置项会被高优先级覆盖,比如 cache-dir 在项目 composer.json 中设为 "./.cache",就会忽略全局设置的路径。
- 项目级配置写在
composer.json的config对象里,例如:{ "config": { "platform": {"php": "8.1.0"}, "sort-packages": true } } - 全局配置通过
composer config -g key value设置,影响所有项目(除非被项目覆盖) -
process-timeout、fxp-asset类插件配置项,若未显式声明,会使用 Composer 内置默认值,--list仍会显示其当前生效值
常见易混淆配置项说明
有些配置名看似直观,实际行为和位置容易误判:
-
github-oauth:必须用composer config -g github-oauth.github.com设置,不能写进项目composer.json(安全限制) -
secure-http:控制是否强制要求包仓库使用 HTTPS,默认true;设为false可临时允许 HTTP 源,但会警告 -
preferred-install:决定require安装时用dist还是source,可设为"dist"、"source"或{"*": "dist"}这样的对象 -
notify-on-install:设为false可关闭安装成功后的 GitHub/GitLab 通知(避免 CI 环境刷屏)
调试配置冲突的实际方法
当某个配置没生效,别急着重装 Composer——先确认它是否被其他层级覆盖:
- 运行
composer config --list | grep -E "(key|cache-dir|github)"快速过滤关键项 - 检查项目根目录是否存在
composer.json和composer.lock,二者都可能隐式影响配置行为(如lock文件会固化platform版本) - 临时新建空目录,执行
composer init -n && composer config --list,对比纯默认值,能快速定位项目级干扰
配置项本身不复杂,但跨作用域叠加后,vendor/autoload.php 加载逻辑、包下载源、甚至 PHP 版本模拟行为都会随之变化——最常出问题的是 platform 和 http-basic 这类影响依赖解析的配置,改完务必 composer update --lock 同步 lock 文件。










