composer config -g repo.packagist 总不生效是因为键名必须为单数repo.packagist、type值必须显式写composer、url须https且末尾带/,三者缺一即静默回退官方源;验证需输出完整json如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。

composer config -g repo.packagist 为什么总不生效
不是网络卡,是命令写错三个硬性条件,导致静默回退到 packagist.org——不报错、不提示、配置为空。
-
repo.packagist必须是单数,写成repos.packagist(多一个 s)就完全无效 -
composer是type值,必须显式写在 URL 前面,漏掉就 fallback 到官方源 - URL 必须用 HTTPS,且末尾带斜杠
/,少斜杠会拼出/composerpackages.json导致 404
验证是否成功:运行 composer config -g repo.packagist,输出必须是完整 JSON,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。返回空、null 或报 Key not found,说明没写进去。
全局镜像 vs 项目级镜像,该选哪个
全局配置看着省事,但 CI/CD、宝塔、Docker 容器里常读不到——因为 -g 写的是当前用户家目录下的 ~/.composer/config.json,而 GitHub Actions 默认用 runner 用户,宝塔用 www 用户,它们的配置文件是空的。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 项目级配置优先级更高,写进
composer.json,拉代码即生效,团队协作更一致 - 进项目根目录后执行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉-g) - 它会自动在
composer.json顶层添加或合并"repositories"字段,key固定为"packagist" - 已有私有源?别用
config命令覆盖整个repositories,应手动编辑,在数组里追加{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
composer create-project 还是慢,怎么办
这个命令不读全局镜像配置,会绕过 repo.packagist 直连 packagist.org 下载 skeleton 包——所以即使全局配好了,create-project 仍可能卡在 Loading composer repositories。
- 必须显式加
--repository-url参数:composer create-project laravel/laravel myapp --repository-url=https://mirrors.aliyun.com/composer/ - 某些框架 starter 模板含 Git 克隆步骤(如 Symfony),镜像只加速包下载,Git 部分需另配代理或换国内 fork
- 新发布的包(尤其 dev-main 分支)可能有 5–30 分钟同步延迟,查不到时先访问
https://mirrors.aliyun.com/composer/packagist/确认是否已收录
换源后还卡在 Resolving dependencies 怎么办
镜像只加速下载,不加速依赖解析——卡在这里和镜像源完全无关。
- 现象:命令跑十几秒不动,日志停在
Resolving dependencies或Loading available packages - 本质是本地约束太宽(如
"^2.0")、composer.lock陈旧,或 require 版本冲突引发深度回溯 - 优先用
composer install恢复已有锁文件,而非盲目update - 真要更新,加
-vvv查日志,常见卡点是某个包的dist地址返回 404,此时换镜像也救不了
最易被忽略的一点:改了镜像后,vendor/ 和 composer.lock 里的旧 hash 仍指向海外源地址,必须删掉重装才能真正走镜像。










