Composer 2.2+ 全局镜像配置必须严格使用键名 repo.packagist(单数、小写、无s),且 URL 须以 / 结尾、type 必须为 composer,否则静默失败;全局配置默认存于 /root/.composer/config.json,但宝塔、Docker、CI 等环境因用户权限或路径缺失常无法读取,推荐改用项目级配置并执行 composer clear-cache 生效。

直接执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 就能生效,但任意一个字符写错都会静默失败——它不会报错,也不会提示,只会继续连 https://packagist.org。
为什么 composer config -g repo.packagist 没反应
不是命令没运行,是 Composer 2.2+ 根本没存进去。它只认精确的键名 repo.packagist(单数、无 s、全小写),漏掉 -g、多写一个 s(变成 repos.packagist)、URL 缺末尾 /、中间漏掉 composer 这个 type 值,任一出错都静默忽略整条配置。
- 验证是否真写进去了:运行
composer config -g repo.packagist,输出必须是完整 JSON 对象,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果返回空、
null、Key "repo.packagist" does not exist,说明配置失败 - 常见错误示例:
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer(少/+ 多s)→ 完全无效
全局配置在宝塔 / Docker / CI 里不生效
因为全局配置默认写进 /root/.composer/config.json,而宝塔后台以 www 用户运行,GitHub Actions runner 用 runner 用户,Docker 容器里甚至没有 ~/.composer 目录——它们根本读不到 root 的配置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时解法:
sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 更稳做法:放弃全局,进项目根目录执行
composer config repo.packagist composer https://mirrors.huaweicloud.com/repository/php/(不带-g) - 该命令会自动写入
composer.json的repositories字段,Git 可追踪,CI 可复现 - 注意华为云路径含
/repository/php/,不能直接套用阿里云模板
换源后还是卡在 “Loading repositories”
不是镜像没配对,是请求压根没发过去。Composer 优先读本地缓存和 composer.lock 里记录的老地址,哪怕你刚配完新源,它仍可能反复请求官方源。
- 必做一步:
composer clear-cache,否则一切白配 - 检查
composer.json是否有"packagist.org": false或空"repositories": []—— 这类写法会彻底禁用回退机制 - 项目级
repositories字段优先级高于全局,进项目后运行composer config repo.packagist看到的可能是项目自己的设置,不代表全局失效 - 临时验证镜像可用性,用
--repository-url最干净:composer update --repository-url=https://mirrors.tuna.tsinghua.edu.cn/composer/
最易被忽略的点:URL 必须以 / 结尾,少一个斜杠就会拼出 /composerpackages.json 导致 404;type 值 composer 是硬性参数,不是注释,不能省略或替换成 https;repo.packagist 是唯一合法键名,写成 repositories.packagist.org 虽然兼容但不推荐,且容易混淆。

















