必须配置repo.packagist而非repositories,因composer 2.2+硬编码直连packagist.org,仅通过composer config -g repo.packagist composer https://www.php.cn/link/1569ae888190eb8c53b218b0d529e1e9才能使元数据请求转向镜像。

packagist.org 是 Composer 的官方元数据源,所有 PHP 包的名称、版本列表、依赖关系、下载链接都从这里实时生成和分发。它不是 CDN,也不托管 ZIP 文件本身,而是纯索引服务。
国内直连 packagist.org 常失败或极慢,不是你网络差,是 DNS 解析、TLS 握手、路由路径在物理层就被干扰——尤其在企业网、校园网、某些云主机上,composer create-project 卡在 “Loading composer repositories” 超过 2 分钟,基本就是这个原因。
Packagist 中国全量镜像,比如 @#@#@#@#@#@#@#@#@#@0,本质是定期同步 packagist.org 的全部元数据(packages.json、provider-*.json 等),并提供相同接口结构的代理服务。它不加速 ZIP 包下载,只解决「找包慢」——也就是依赖解析前那几百次 HTTP 请求。
为什么必须显式配置 repo.packagist
Composer 2.2+ 把官方源视为“全局单例”,repositories 数组只影响非 Packagist 类型的源(比如私有 Git 仓库)。即使你在 composer.json 里加了镜像,composer install 仍会绕过它,硬编码请求 repo.packagist.org。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
真正生效的只有:
-
composer config -g repo.packagist composer @#@#@#@#@#@#@#@#@#@0(全局) - 或
composer config repo.packagist composer @#@#@#@#@#@#@#@#@#@0(项目级,写入composer.json)
镜像不是万能的:常见失效场景
- URL 少了末尾
/:会拼出/composerpackages.json导致 404 - 键名写成
repos.packagist或packagist.org:配置静默写错位置,查composer config -g repo.packagist返回空 - 之前用过旧镜像(如
phpcomposer.com)没清理:composer config -g --unset repos.packagist必须先执行 - 镜像同步滞后:某个
provider-laravel~10.0.json还没同步,就会报 “Could not fetch”,此时可临时切中科大源
验证是否真生效
运行 composer config -g repo.packagist,输出应为完整 JSON 对象,含 "type": "composer" 和正确 URL;再试 composer show packagist/support,看 URL 是否已变成镜像域名。
最易被忽略的一点:换源后仍卡在 “Resolving dependencies”,那和镜像无关——那是 PHP 版本约束太宽、dev 分支太多、或用了已废弃的 fxp/composer-asset-plugin。










