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 命令为什么没生效
它根本没写进配置,但也不报错——这是最常被忽略的“静默失败”。repo.packagist 键名写成 repos.packagist(多一个 s)、漏掉中间的 composer type 值、URL 少了末尾 /,三者任一出错,Composer 就自动 fallback 到 https://packagist.org,且日志里完全不提示。
验证是否真写进去了,只看这一行输出:composer config -g repo.packagist
必须返回完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"},或至少是带结尾斜杠的 URL 字符串。返回 null、空、Key not found 或仍含 packagist.org,说明配置压根没成功。
卡在 Loading composer repositories 的真实原因
这一步不是在下载包,而是在拉取全量元数据文件 packages.json。默认走海外地址,DNS 解析慢、TLS 握手不稳定、首字节延迟高,国内直连成功率极低。
镜像源必须同时提供元数据接口和 ZIP 包分发节点,且两者 URL 路径结构一致。比如阿里云地址是 https://mirrors.aliyun.com/composer/,那它下面的 packages.json 和后续每个包的 dist 下载路径都得能拼出来。少个 / 就会变成 /composerpackages.json,直接 404。
- 手动验证镜像连通性:
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回200 OK - 运行
composer install -vvv,盯住第一行日志:必须出现Downloading https://mirrors.aliyun.com/composer/packages.json - 如果日志里还看到
packagist.org/packages.json,说明全局配置被覆盖或失效
项目级配置比全局更可靠
全局配置写在 ~/.composer/config.json,但在 Docker、宝塔、GitHub Actions 等环境里,执行用户(如 www-data 或 runner)往往读不到你的配置。项目级配置直接写进 composer.json,随代码提交,行为确定。
进项目根目录后执行:composer config repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/(注意不加 -g)
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
这条命令会安全追加到 composer.json 的 repositories 字段中,不覆盖已有私有源。但要注意:
- 如果
composer.json原来是"repositories": [](数组),命令会失败;需先改成"repositories": {}(对象) - 已有私有仓库时,别手写 JSON——引号或逗号错一个,
composer install就直接报语法错误 - 改完后必须删掉
vendor/和composer.lock,否则旧 lock 文件里的哈希与镜像站元数据不匹配,会报 signature mismatch
IPv6 干扰导致卡死却查不到原因
很多用户跑 -vvv 看日志一切正常,但就是卡几秒甚至几十秒——大概率是 IPv6 解析超时后才回退 IPv4。每个请求多耗 1–2 秒,叠加几十个包就彻底卡住。
临时禁用 IPv6 最有效:COMPOSER_NO_IPV6=1 composer install
或者加到系统环境变量里长期生效。这个开关不影响任何功能,只绕过 DNS 的 IPv6 查询环节,对国内网络环境几乎是必开项。
真正卡点往往不在“网速”,而在配置细节是否严丝合缝:键名、type、结尾斜杠、缓存清理、lock 文件重生成、IPv6 开关——少一个,composer install 就可能安静地卡在 loading 那一行,不报错也不动。










