全局配置需满足四条件才生效:-g参数、键名repo.packagist、type值为composer、HTTPS末尾带/;项目级配置一旦存在repositories字段即完全屏蔽全局配置,且必须手动合并私有源并确保packagist.org:false置顶。

要让 Composer 在所有项目中都走国内镜像源,不能只在某个项目里改配置,必须明确区分全局设置和项目设置的生效范围与冲突规则;否则会出现本地测试正常、CI 构建失败、同事拉代码后卡在 Loading repositories 的情况。
全局配置只对当前用户生效,且极易静默失败
运行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 命令时,必须同时满足四个硬条件才真正落盘:【-g 参数不可省略】、键名必须是 repo.packagist(写成 repos.packagist 或 packagist.org 都无效)、中间的 composer 是强制 type 值(不是注释或别名)、URL 必须是 HTTPS 且末尾带 /,例如 https://mirrors.aliyun.com/composer/✅。
验证是否成功:执行 composer config -g repo.packagist,输出必须是完整 JSON 对象,如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。返回空、null、Key not found 或只有一行 URL,说明没写进去,立刻重试。
Windows 用户改完要重启终端,否则配置文件读取不到新内容。
宝塔面板后台执行命令默认是 www 用户,你在终端用自己账号配的全局镜像对它无效。
项目级配置才是协作和部署的唯一可靠方式
进项目根目录后运行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意:不加 -g),它会把镜像写进 composer.json 的 repositories 对象中,key 固定为 "packagist"。
这一步操作起来很简单,直接在项目根目录下执行命令就行。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
但要注意:【只要项目目录下 composer.json 含有 repositories 字段,无论内容如何,Composer 均跳过全局配置】——不是优先级低,是压根不读取。哪怕你只写了 "repositories": [],全局镜像也彻底失效。
已有私有源?该命令会**完全覆盖**整个 repositories 字段,不是追加。想保留私有源,得手动合并 JSON 结构。
项目级配置与全局配置的优先级关系
第一步:打开项目根目录下的 composer.json 文件,检查是否存在 "repositories" 字段。
第二步:如果存在,无论其值是 {}、[] 还是 {"packagist.org": false},Composer 都不会加载全局镜像配置。
第三步:若需保留官方源兜底行为,必须在 repositories 数组首位显式添加 {"packagist.org": false},否则镜像超时或 TLS 错误时 Composer 不 fallback,直接报错。
第四步:确认镜像 URL 末尾带 /,否则请求路径拼成 /composerpackages.json 导致 404,被误判为“包不存在”。
第五步:删掉项目下的 vendor/ 和 composer.lock,再跑 composer install --no-cache。旧 composer.lock 记录的是官方源的包哈希,和镜像元数据不兼容,必然触发 hash does not match。

















