Composer 2.0+ 镜像配置必须同时满足三项:键名repo.packagist、type值显式为composer、URL以/结尾,缺一则静默回退官方源;验证需输出完整JSON如{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}。

Composer 2.0 镜像配置必须带 type 和结尾斜杠
旧写法 composer config -g repo.packagist https://mirrors.aliyun.com/composer 在 Composer 2.0+ 中完全失效,不是慢,是根本不用你配的镜像——它会静默回退到官方源,或报 Invalid package information。
真正生效的写法必须同时满足三项:
-
repo.packagist键下必须是对象,不能是字符串; - 显式指定
type值为composer; -
url必须以/结尾,否则请求/packages.json时路径拼接错误(如变成.../composer/packages.json→ 404)。
正确命令示例:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
镜像站必须支持 sha256 哈希透传,否则 install 失败
Composer 2.5+ 强制校验 provider 文件的 sha256,旧式镜像(如已停服的 phpcomposer.com)靠 URL 替换无法透传签名,直接触发 hash mismatch in provider file 或 Invalid package information。
主流镜像当前支持情况:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 阿里云镜像:2025 年 Q3 起默认启用透传,开箱即用;
- 腾讯云镜像:需手动开启签名验证:
composer config -g repos.packagist.options.verify-signature true; - 清华 TUNA 镜像:目前不支持透传,
composer install在含require-dev或私有包时容易部分失败。
CI/CD 和 Docker 环境中别碰全局 config
composer config -g 写入的是 ~/.composer/config.json,在 CI 流水线或复用 Docker 镜像时极易继承前序 job 的错误配置,导致当前任务卡住且无明确提示。
更安全的做法是临时覆盖:
- 用
-d指定独立配置目录:composer install -d /tmp/composer-config; - 或通过环境变量注入:
COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ composer install; - Dockerfile 中绝对避免
RUN composer config -g,它会污染基础镜像。
项目级配置比全局配置更可控
团队协作中,composer config repo.packagist composer https://mirrors.aliyun.com/composer/(无 -g)会把配置写入项目根目录的 composer.json 的 repositories 字段,所有成员执行 composer install 时自动生效,无需各自配置,也规避了全局配置被误改或冲突的问题。
但要注意:如果项目 composer.json 已存在自定义 repositories 数组,直接运行该命令会覆盖整个数组,应改用 composer config repositories.packagist composer https://... 显式更新键名。
复杂点在于,一旦混用全局 + 项目级 + 命令行参数,Composer 的优先级规则并不直观,出问题时建议先 composer config -l -g 和 composer config -l 对比输出,确认实际生效的是哪一层。

















