composer 全局镜像配置生效需同时满足三点:键名必须为 repo.packagist(单数小写)、type 必须显式指定为 composer、url 必须以 https:// 开头且以 / 结尾;验证需通过 composer diagnose 或 -vvv 日志确认实际请求域名,并删除 vendor 和 composer.lock 后执行 install 才能真正生效。

composer config -g repo.packagist 为什么总不生效
它根本不会报错,但只要写错一个字符就彻底退回到 https://packagist.org,连日志都不留。真正生效必须同时满足三点:
• 键名必须是 repo.packagist(单数、全小写、不能多 s,写成 repos.packagist 或 repositories.packagist.org 都无效)
• 中间必须显式传 composer 作为 type 值(漏掉就当配置不存在)
• URL 必须以 / 结尾且带 https://(https://mirrors.aliyun.com/composer/ ✅,https://mirrors.aliyun.com/composer ❌——少斜杠会导致请求路径拼成 /composer/packages.json,直接 404)
验证镜像是否真在用,别信 config 输出
composer config -g repo.packagist 只告诉你“存了什么”,不代表“正在用”。真实证据只有网络请求:
• 运行 composer diagnose,找到 Repo packagist.org: 这一行,后面域名必须是你配的镜像地址(比如 mirrors.tuna.tsinghua.edu.cn)
• 执行 composer require monolog/monolog --no-install -vvv,第一行日志里 Downloading https:// 后面的域名才是实际源
• 如果仍看到 packagist.org,立刻检查项目级覆盖:进项目目录运行 composer config repo.packagist(不带 -g),有输出说明 composer.json 里的 "repositories" 字段正在生效
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
删 vendor 和 composer.lock 是必做动作,不是可选
旧 composer.lock 里固化的是官方源的 dist.url 和 hash,和镜像元数据不匹配会导致校验失败、404 或 “Package not found”。必须执行:
• rm -rf vendor composer.lock(Linux/macOS)或手动删除(Windows)
• 再跑 composer install(不是 update),才能让 Composer 重新解析依赖、生成新 lock 文件、走镜像拉取元数据,并从正确位置下载 dist 包
• CI 流水线中务必把这两步写进脚本,否则每次构建都可能复用旧 lock 文件
项目级配置比全局更可靠,尤其在宝塔和 CI 环境
全局配置写在 ~/.composer/config.json,但它只对执行命令的用户生效。宝塔默认用 www 用户跑 PHP,GitHub Actions 用 runner 用户,它们读不到你本地用户的配置:
• 宝塔环境先确认执行用户:whoami,再用 sudo -u www composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/
• 更推荐进项目根目录运行 composer config repo.packagist composer https://mirrors.cloud.tencent.com/composer/(去掉 -g),它会自动安全追加到 composer.json 的 "repositories" 数组首位
• 注意:如果项目已有 "repositories",该命令会合并而非覆盖;手动编辑时 JSON 必须合法,末尾不能多逗号










