执行 composer config 默认修改当前项目 composer.json 文件,加 --global 才改全局配置;私有仓库需用 --add 添加,auth.json 才是认证凭据的正确存储位置,且须 chmod 600;修改 autoload 后需运行 composer dump-autoload 生效。

config 命令改的是哪个配置文件
执行 composer config 时,默认操作的是当前项目根目录下的 composer.json 文件,不是全局的 ~/.composer/config.json。只有加 --global 才会改全局配置。这点容易混淆——很多人在项目里跑完 composer config repo.packagist composer https://packagist.phpcomposer.com 却发现没生效,就是因为误以为改了全局源,实际只是往自己项目的 composer.json 里塞了一段 "repositories",而该字段若未被 Composer 加载(比如被 "repositories": [{"type": "composer", "url": "..."}] 覆盖或拼写错误),就会静默失效。
修改私有仓库地址必须用 --add
直接 composer config repositories.myrepo type composer 不会创建新仓库条目,而是尝试覆写已存在的 repositories.myrepo 字段(通常不存在,于是报错或忽略)。正确做法是:
- 用
--add显式添加:composer config --add repositories.myrepo '{"type":"composer","url":"https://my.repo/api/"}' -
url值必须是合法 JSON 字符串,单引号包裹,双引号保留在内部 - 如果已有同名仓库,
--add会追加为数组新元素;不加--add则尝试赋值给键,易覆盖或失败 - 改完后建议运行
composer config repositories查看结果,确认结构是数组而非对象
auth.json 的 token 配置不能用 config 命令写入
composer config http-basic.my.repo username password 看似能存认证信息,但它只写入 composer.json 的 config.http-basic 字段——而 Composer 实际读取凭据的优先级是:auth.json > composer.json 中的 config.http-basic。所以这种写法基本无效,且存在安全风险(把密码明文塞进 composer.json 并提交到 Git)。
正确方式是手动编辑 auth.json(位于项目根目录或 ~/.composer/auth.json),内容格式为:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{
"http-basic": {
"my.repo": {
"username": "xxx",
"password": "yyy"
}
}
}
注意:auth.json 必须设为 600 权限(chmod 600 auth.json),否则 Composer 会拒绝读取。
局部配置和 vendor/autoload.php 的加载关系
改完 composer.json 后,vendor/autoload.php 不会自动更新。很多用户以为改了 autoload 配置(如 psr-4 映射)就立刻生效,其实必须显式运行 composer dump-autoload 才会重生成自动加载器。
- 新增类映射后忘记 dump,
Class not found错误依然存在 - 如果用了
--optimize-autoloader(即-o),dump 时会生成优化后的classmap,但开发中一般不需要,反而掩盖路径问题 - 局部配置里的
config.process-timeout或config.autoload类参数,只影响后续install/update行为,不改变已安装包的运行时行为
真正关键的点在于:config 命令只是改声明,不是改状态;它不触发任何安装、下载或代码生成动作,所有依赖行为仍需配合 install、update 或 dump-autoload 才落地。










