自建镜像服务必须暴露 /packages.json 和 /dist/ 路径,确保 Composer 客户端能访问合法 JSON 元数据和 ZIP 包;配置需满足键名 repo.packagist、type 为 composer、URL 以 HTTPS 且结尾带斜杠;项目级 repositories 会屏蔽全局配置;换镜像后须删除 vendor/ 和 composer.lock 再 install。

自建镜像服务必须暴露 /packages.json 和 /dist/ 路径
Composer 客户端只认两个固定入口:根路径下的 packages.json(索引元数据)和 dist/ 子目录(实际 ZIP 包)。哪怕你用 Nginx 反向代理,也必须确保访问 https://your-mirror.com/packages.json 返回合法 JSON,且 https://your-mirror.com/dist/xxx.zip 能直接下载二进制文件。
常见错误:
- 用 Apache 默认配置,
.htaccess拦截了dist/下的 ZIP 请求,返回 403 - Nginx 配置漏写
location /dist/ { }块,导致 ZIP 文件 404 - 镜像服务本身没生成
packages.json,或内容格式不满足 Composer v2 协议(比如缺少packages字段或notify-batch字段)
验证方式:手动 curl -I https://your-mirror.com/packages.json 看状态码是否为 200;再 curl -o /dev/null -s -w "%{http_code}" https://your-mirror.com/dist/some-package-1.0.0.zip 确认返回 200。
composer config 无法指向私有镜像?检查三要素是否全对
无论你用的是自建镜像还是阿里云镜像,composer config -g repo.packagist 这条命令生效的前提是三个硬性条件同时满足:
- 键名必须是
repo.packagist(不是repos.packagist,也不是repository.packagist) - 中间的
composer是 type 值,不能省略,也不能写成package或其他字符串 - URL 必须是 HTTPS,且末尾带斜杠:
https://your-mirror.com/✅,https://your-mirror.com❌(少斜杠会导致拼出https://your-mirror.com/packages.json成功,但https://your-mirror.com/packagist.org/packages.json失败)
执行后务必验证:composer config -g repo.packagist 输出应为完整 JSON 对象,例如:{"type": "composer", "url": "https://your-mirror.com/"}。空、null、或只输出 URL 字符串,都说明配置未写入成功。
项目级配置会完全屏蔽自建镜像,别依赖全局
只要项目根目录的 composer.json 里存在 repositories 字段——哪怕只是 "repositories": {} 或 "packagist.org": false ——Composer 就会跳过全局 repo.packagist 配置,彻底不走你的自建镜像。
排查方法很简单:进项目目录,运行 composer config repo.packagist(不加 -g)。如果有输出,说明项目自己接管了源;如果报 Key "repo.packagist" does not exist,才说明全局配置有机会生效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
安全写法是手动编辑 composer.json 的 repositories 数组:
- 首位放
{"packagist.org": false}关闭默认源 - 第二位放你的自建镜像:
{"type": "composer", "url": "https://your-mirror.com/"} - 保留其他私有源(如 Git 类型),它们会并行查询
注意:composer config repo.packagist composer https://your-mirror.com/ 会重写整个 repositories 字段,已有私有源会被清空。
换自建镜像后 composer install 报 hash 不匹配
这不是网络问题,而是旧 composer.lock 文件里记录的包哈希值对应的是 packagist.org 的 dist URL,而你的自建镜像返回的是不同路径下的 ZIP,校验必然失败。
必须做两件事:
- 删掉项目里的
vendor/目录 - 删掉
composer.lock文件
然后执行 composer install(不是 update),让 Composer 重新解析依赖树、从你的镜像拉取元数据、生成适配新源的 lock 文件。跳过任一环节,都会卡在 Verifying archive integrity 或直接报错 Signature error。
额外提醒:如果你的自建镜像还没同步完全部包,首次 install 可能失败。建议先用 composer install --dry-run 验证可解析性,再正式执行。

















