composer 2.2+ 废弃 repo.packagist 键名,必须用 repositories.packagist.org 并分两步配置 type 和 url,且 url 末尾需加斜杠;项目级 composer.json 中 repositories 字段会完全覆盖全局配置,生效前须执行 composer clear-cache。

composer config -g repo.packagist 为什么没用
因为 Composer 2.2+ 已废弃 repo.packagist 这个键名,写进去也静默忽略——它只认 repositories.packagist.org。你执行成功、返回不报错,不代表配置生效。
必须拆成两步写入:
composer config -g repositories.packagist.org.type composercomposer config -g repositories.packagist.org.url https://mirrors.aliyun.com/composer/
漏掉 .type 行,或 url 少了末尾 /(比如写成 https://mirrors.aliyun.com/composer),都会导致请求路径拼成 /p2/xxx.json 时 404。
明明配了镜像,install 还是直连 packagist.org
项目级 composer.json 中的 "repositories" 字段优先级高于全局配置,只要存在,哪怕内容为空数组或 {"packagist.org": false},也会直接屏蔽全局镜像。
检查方式:
- 运行
grep -A 5 '"repositories"' ./composer.json - 若输出非空,说明被覆盖
- 临时清掉:执行
composer config --unset repositories(注意没-g)
CI/CD 或 Docker 构建中更常见:全局配置写进了容器的 /root/.composer,但实际运行命令的用户是 www-data,根本读不到。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
curl 测镜像通但 composer install 还卡住
composer diagnose 不验证镜像连通性,它只连 https://packagist.org,和你配的镜像无关。真正有效的测试是:
- 运行
curl -I https://mirrors.aliyun.com/composer/packages.json—— 必须返回HTTP/2 200或HTTP/1.1 200 OK - 若返回
301或超时,不是 Composer 问题,是 DNS、代理或证书链异常(尤其企业内网) - 某些镜像(如清华源)公网访问会返回 HTML 页面(人机验证),Composer 解析失败,建议生产环境换阿里云或腾讯云源
别信日志里 “Loading repository” 就代表走对了地址——加 -vvv 看第一行 Downloading 后的域名才准:composer install -vvv 2>&1 | head -n 10 | grep Downloading。
换源后还是 404 或 SSL 错误
composer.lock 文件硬编码了旧 provider 地址(比如 https://packagist.org/p2/monolog/monolog.json),换镜像后 Composer 仍优先尝试这个 URL,直到失败才 fallback——而 fallback 逻辑在新版里已被移除。
必须做三件事:
- 删掉
vendor/和composer.lock - 执行
composer clear-cache - 再跑
composer install(不是update)
SSL 错误(cURL error 60)不是镜像问题,是 PHP 找不到可信 CA 证书。查路径:php -r "print_r(openssl_get_cert_locations());",确认 capath 下有可用证书;Windows 下常因 Git Bash 权限或 %APPDATA% 路径写错导致配置落空。










