composer config 命令仅修改 composer.json 或 auth.json 文件,不支持真正动态运行时配置;所有变更均落盘,所谓“动态”指通过命令快速增删改查配置项。

composer config 命令本身不支持“动态运行时修改配置”——它只修改 composer.json 或 auth.json 文件,或读取全局/本地配置,所有变更都会落盘。所谓“动态”,实际是指在不手动编辑 JSON 文件的前提下,用命令快速完成配置增删改查。
修改项目级 composer.json 配置项
直接写入 composer.json 的 config 段,影响当前项目所有后续命令(如 install、update):
- 设置镜像源:
composer config repositories.packagist composer https://mirrors.aliyun.com/composer/ - 禁用平台配置检查(绕过 PHP 版本警告):
composer config platform.php 7.4.33(注意:该值必须是字符串,不能写7.4) - 启用符号链接安装(开发时常用):
composer config prefer-stable true和composer config symlink true - 删除某项配置:
composer config --unset repositories.packagist
⚠️ 注意:config 子键路径用点号分隔,嵌套层级越深越容易拼错;修改后建议立即执行 composer validate 确认 JSON 结构合法。
操作 auth.json 敏感配置(令牌、私库凭证)
凭据类配置**绝不应写进 composer.json**,必须走 auth.json。使用 --auth 标志才能写入该文件:
- 添加私有 GitLab 仓库 Token:
composer config --auth http-basic.gitlab.example.com token my_personal_access_token - 添加 GitHub OAuth Token(用于突破 API 限流):
composer config --auth github-oauth.github.com abc123def456... - 查看已存凭据(明文输出,慎用):
composer config --auth --list
⚠️ auth.json 默认权限为 600,若手动编辑后 chmod 错误,Composer 会静默忽略该文件——检查 ls -l $(composer config --home)/auth.json 是否可读即可。
全局配置 vs 项目配置优先级与作用域
Composer 查找配置顺序为:命令行参数 → 当前目录 composer.json → 当前目录 auth.json → 全局 auth.json → 全局 config.json(位于 composer config --home 目录)。这意味着:
- 项目级
config可覆盖全局同名设置,例如全局设了process-timeout,项目里再设一次就以项目为准 - 全局配置用
--global标志:composer config --global repo.packagist false(禁用 Packagist) - 临时覆盖某次命令行为,优先用命令行参数而非改配置,例如:
composer install --no-scripts --no-plugins
⚠️ 全局 config.json 修改后,所有项目都会受影响,但不会自动同步到已有项目的 composer.json 中——两者完全独立。
常见错误与调试技巧
遇到配置不生效?先排除这几点:
- 拼错 key 名:比如把
fxp-asset写成fxp-assets,Composer 不报错但忽略该配置 - 路径未加引号导致空格截断:
composer config bin-dir "bin/"必须加引号,否则/后内容丢失 - 缓存干扰:修改
config后,vendor/autoload.php不会自动重生成,需手动composer dump-autoload(仅当改了 autoload 相关配置时) - 调试当前生效的完整配置:
composer config --list --format=json输出合并后的最终配置,比--list更直观
{
"process-timeout": 300,
"use-include-path": false,
"preferred-install": "dist",
"sort-packages": true,
"github-protocols": ["https","ssh"],
"notify-on-install": true
}
真正容易被忽略的是:Composer 的很多行为(如是否走 HTTPS、是否启用插件)由配置驱动,但这些配置没有默认值提示,也不会在 composer.json 中自动生成——你得自己知道要配什么,然后手动敲出来。










