镜像源配置不生效的根源在于repo.packagist键名、composer类型值、末尾带/的HTTPS URL三者必须严格同时满足,缺一即静默回退至packagist.org;正确命令为composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/,且需删除vendor和composer.lock后重新install。

镜像源配置不生效,90% 是因为 repo.packagist 键名、composer type 值、末尾带 / 的 HTTPS URL 这三点没同时满足——写错一个字符,Composer 就静默回退到 https://packagist.org,不报错、不提示、只卡在 Loading composer repositories 或 Downloading。
composer config -g repo.packagist 为什么总不生效
它不是“偶尔失灵”,而是严格校验三要素:缺一即失效,且无任何错误反馈。
-
repo.packagist必须是单数、全小写、不能多s(repos.packagist、repositories.packagist.org、mirror全无效) - 中间必须显式传
composer作为第二参数,漏掉就写成普通字符串,不被识别为仓库类型 - URL 必须以
https://开头、以/结尾:https://mirrors.tuna.tsinghua.edu.cn/composer/✅,https://mirrors.tuna.tsinghua.edu.cn/composer❌(拼路径时变成/composer/packages.json,404)
正确命令只有一条:composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/。执行后立刻验证:composer config -g repo.packagist 输出必须是完整 JSON 对象,如 {"type": "composer", "url": "https://mirrors.tuna.tsinghua.edu.cn/composer/"};空、null、或仍显示 https://packagist.org,说明根本没写对。
怎么确认镜像真在用,而不是“看起来配了”
composer config 的输出只是配置快照,不是运行证据。真实请求地址才是唯一判据。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer diagnose,找到Repo packagist.org:这一行,后面域名必须是你配的镜像(如mirrors.aliyun.com) - 执行
composer require monolog/monolog --no-install -vvv,第一行日志里Downloading https://后面的域名必须匹配镜像地址 - 如果仍看到
packagist.org,立刻检查项目级覆盖:composer config repo.packagist(不带-g),有输出说明composer.json中的repositories字段正在生效,全局配置已被忽略
删 vendor 和 composer.lock 是硬性步骤,不是建议
旧 composer.lock 里固化的是官方源的 dist.url 和哈希值,和镜像元数据不一致会导致校验失败、404 或 “Package not found”。
- 必须执行:
rm -rf vendor composer.lock(Linux/macOS)或手动彻底删除(Windows) - 再跑
composer install(不是update),让 Composer 重新解析依赖、生成新 lock 文件、从镜像拉取元数据并下载 dist 包 - CI 流水线中务必把这两步写进脚本,否则每次构建都可能复用旧 lock 文件,导致不可复现的失败
项目级配置比全局更可靠,尤其在宝塔、CI、Docker 场景
全局配置写在 ~/.composer/config.json,但只对执行命令的用户生效。宝塔默认用 www 用户跑 PHP,GitHub Actions 用 runner 用户,它们读不到你本地用户的配置。
- 进项目根目录,执行:
composer config repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(不加-g) - 该命令会自动向
composer.json的repositories字段追加"packagist"条目,key 固定为packagist,不会覆盖已有私有源(前提是原repositories是对象结构) - 配置随代码提交,新人拉完即用,CI 每次构建都读取最新设置;避免因用户权限、环境隔离导致的“本地能装、线上失败”
最常被忽略的一点:即使配对成功、缓存清空、lock 删除,若项目 composer.json 中 repositories 是空数组 [] 或格式非法(比如逗号遗漏、引号错位),Composer 会直接拒绝加载整个字段——此时连镜像 URL 都不会尝试请求。

















