composer 不支持 repo.packagist 双镜像,仅接受单 url;腾讯云镜像已下线,404 后自动回退官方源;真双源需用 repositories 数组 + "packagist.org": false 禁用默认源,推荐阿里云+华为云组合。

composer config -g repo.packagist 不支持双镜像
Composer 官方不支持为 repo.packagist 配置多个 URL,它只接受一个 {"type": "composer", "url": "..."} 对象。所谓“双备份”,本质是 fallback 机制或项目级多源配置,不是并行请求两个镜像。
常见错误现象:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ https://mirrors.cloud.tencent.com/composer/ 会直接报错或静默截断第二个 URL;写成数组、对象嵌套也无效——Composer 2.x 解析器会拒绝非法结构,回退到默认源。
-
repo.packagist是单值键,只能存一个镜像地址 -
腾讯云镜像已于 2024 年 10 月 1 日正式下线,
https://mirrors.cloud.tencent.com/composer/现在返回 404,不能作为有效备选 - 若强行保留该 URL,
composer install -vvv日志中会出现GET https://mirrors.cloud.tencent.com/composer/packages.json→404→ 自动 fallback 到https://repo.packagist.org/packages.json,全程无提示
用 repositories + packagist.org: false 实现真·多源控制
真正可控的“双镜像”方案,是放弃 repo.packagist,改用项目级 repositories 数组,并显式禁用默认源。这样你可以按优先级顺序列出多个 composer 类型源,Composer 会从上到下依次尝试。
操作步骤(进项目根目录执行):
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先清缓存:
composer clear-cache - 删掉旧 lock 和 vendor:
rm -rf vendor composer.lock - 写入多源配置:
composer config repositories '{"packagist": {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}, "huawei": {"type": "composer", "url": "https://repo.huaweicloud.com/php/"}, "packagist.org": false}' - 验证是否生效:
cat composer.json | grep -A5 repositories应看到完整 JSON 对象,且"packagist.org": false与其它源同级
注意:"packagist.org": false 必须显式存在,否则 Composer 仍会把官方源加在最后兜底,导致卡在 “Loading composer repositories” —— 这不是慢,是它在等 packagist.org 响应超时。
阿里云 + 华为云组合比“阿里+腾讯”更可靠
当前(2026 年 9 月)实测有效的国内镜像只剩三个:https://mirrors.aliyun.com/composer/、https://repo.huaweicloud.com/php/、自建 Coding 镜像。其中华为云地址虽路径是 /php/ 而非 /composer/,但其后端服务完全兼容 Composer 协议,元数据同步稳定,响应时间均值
- 阿里云同步频率高,新包上线延迟通常
- 两者证书均为可信 CA 签发,无 HTTPS 报错;而腾讯云、Laravel China、phpcomposer.com 等均已失效或返回空响应
- 如果项目含私有 Git 包,
repositories数组可安全追加:"my-private": {"type": "vcs", "url": "git@xxx"},Composer 会合并处理,不影响镜像逻辑
别迷信“双镜像 = 更快”,实际瓶颈常在 DNS 解析或本地缓存。一次 composer install -vvv 中,你看到的首个成功响应源,就是最终生效源 —— 后续请求都走它的 provider 缓存,不会反复切换。
CI/CD 环境下必须用项目级配置
全局配置 composer config -g 写在 ~/.composer/config.json,但 GitHub Actions、GitLab CI、Docker 构建环境默认以非登录用户运行,读不到你的家目录配置。它们只会读项目根目录下的 composer.json。
- CI 脚本里不要写
composer config -g,应确保composer.json已含正确的repositories字段 - Dockerfile 中推荐:先 COPY
composer.json,再 RUNcomposer install --no-interaction --prefer-dist,避免缓存污染 - 宝塔面板用户注意:PHP 进程常以
www用户运行,其~/.composer是独立路径,和你 shell 登录用户的配置不共享
最易被忽略的一点:换源后首次 composer install 必须带 -vvv 并盯住日志里第一个 GET 请求的 URL。只要它不是你配的镜像地址,说明 repositories 没生效、缓存没清、或 packagist.org: false 缺失 —— 这三处任一出问题,都会让“双镜像”变成摆设。










