全局镜像配置必须用 composer config -g,漏掉 -g 仅改项目级 composer.json;正确命令为 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,键名、url 斜杠、用户权限均需严格匹配。

全局镜像配置必须用 composer config -g,不是 config 单独运行
漏掉 -g 参数是最常见失效原因。不加 -g 时,命令只修改当前项目根目录下的 composer.json,写入 "repositories" 字段——这属于项目级配置,和“全局”无关,还会干扰后续全局策略。
正确命令只有一行,且必须严格匹配:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
-
-g表示 global,写入~/.composer/config.json(Linux/macOS)或%APPDATA%\Composer\config.json(Windows) - 键名必须是
repo.packagist,拼成repos.packagist或packagist.org都无效 - URL 末尾的
/不能省,https://mirrors.aliyun.com/composer(少斜杠)会导致 404,Composer 静默 fallback 到官方源 - 别用
sudo执行,否则可能写进 root 用户的config.json,普通用户运行时读不到
Composer 2.2+ 推荐用 repos.packagist.org 替代 repo.packagist
旧键名 repo.packagist 在 Composer 2.x 中仍兼容,但遇到含自定义 metadata 的包(如某些私有包或带 extra 字段的包)时,fallback 行为可能异常。新键名更精确,能控制子域名请求路由。
设置方式略有不同:第二个参数必须是完整 JSON 字符串,不能直接写 URL:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer config -g repositories.packagist.org '{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}'
- 引号必须成对,JSON 内部双引号需转义(Shell 中用单引号包裹整个 JSON)
- 如果报错
Invalid repository type,大概率是 JSON 格式错误或漏了type字段 - 执行后可用
composer config -g repositories.packagist.org验证输出是否为该 JSON 对象
配置生效但依然连 packagist.org?先查项目级 repositories
Composer 加载顺序固定:项目 composer.json > 全局 config.json > 默认值。哪怕全局配置正确,只要项目里有 "repositories" 字段(哪怕内容为空、或仅 {"packagist.org": false}),就会完全屏蔽全局镜像。
- 打开项目根目录的
composer.json,搜索"repositories" - 临时验证可运行
composer config --unset repositories(注意没-g),再执行composer clear-cache - Laravel 脚手架模板常硬编码源,
composer create-project第一次卡住时,得显式加参数:--repository-url=https://mirrors.aliyun.com/composer/
CI、宝塔、计划任务中全局配置不生效,本质是用户权限不一致
全局配置文件只对写入它的用户有效。宝塔后台以 www 用户运行,CI 流水线常用 runner 用户,它们都读不到你本地账户的 config.json。
此时最稳妥的方案是项目级配置:
cd /path/to/your/project composer config repo.packagist composer https://mirrors.aliyun.com/composer/
- 该命令会直接修改
composer.json,Git 可跟踪,不受运行用户影响 - 虽然不如全局“一劳永逸”,但在多环境部署场景下反而更可靠
- 若项目已存在
"repositories",建议删掉整个字段再重配,避免嵌套冲突
真正容易被忽略的点是:全局配置不是“系统级”的,它只是当前用户的配置快照;跨用户、跨上下文时,项目级写死才是唯一确定性解法。










