必须配置Private Packagist源、API token认证及composer.json仓库顺序:①在Private Packagist创建Composer仓库并开启开发分支支持;②生成Read权限token作auth.json用户名,password留空字符串;③composer.json中repositories首项为私有源,域名与auth.json严格一致;④执行composer update --lock生效。

要在项目中稳定拉取公司内部开发的私有 PHP 包,必须让 Composer 明确知道去哪里找、用什么凭证访问、以及如何区分私有包和公共包——配置错误会导致 401 Unauthorized、Could not find package 或静默 fallback 到 packagist.org。
准备 Private Packagist 服务端
登录 Private Packagist 后台,在「Organizations」中创建组织,进入该组织的「Repositories」页,点击「Add Repository」→ 选择「Composer」类型 → 填写仓库名称(如 internal-packages)→ 点击「Create」。这一步生成的是一个托管元数据的 Composer 源地址,形如 https://repo.packagist.com/your-org/,后续所有客户端配置都依赖它。
进入该仓库设置页,确认「Enable development version support」已开启——否则 dev-main、dev-feature/x 等开发分支不会被同步,require 时会直接报错找不到包。
在「API Tokens」页,点击「Create Token」,Scope 选「Read packages」,绑定到对应组织,复制生成的 token 字符串。这个 token 就是后续 auth.json 中的用户名,密码字段必须留空字符串。
配置项目级 auth.json 认证文件
在项目根目录(与 composer.json 同级)创建文件 auth.json,内容严格如下:
{
"http-basic": {
"repo.packagist.com": {
"username": "glpat-xxxxxxxxxxxxxxxxxxxx",
"password": ""
}
}
}
注意:password 字段不能删掉、不能为 null、不能填任意字符串,必须是空字符串 "";username 必须是你从后台复制的完整 API token;域名 key repo.packagist.com 必须与你私有源 URL 的 host 部分完全一致(不含 https://、路径或端口)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
执行 chmod 600 auth.json(Linux/macOS)或确保 Windows 上该文件无继承权限——权限过宽时 Composer 会静默忽略 auth.json,不报错也不提示。
修改项目 composer.json 声明私有源
打开项目根目录下的 composer.json,找到或新增 repositories 字段,按以下顺序写入:
① 第一项必须是你的 Private Packagist 源,type 为 composer,url 末尾带斜杠:
{"type": "composer", "url": "https://repo.packagist.com/your-org/"}
② 如果你还想保留 packagist.org 上的公共包(绝大多数场景都需要),不要加 "packagist.org": false;但若私有包名与公共包冲突(如都叫 acme/utils),必须把私有源放在 repositories 数组最前面——Composer 总是从左到右匹配第一个能提供该包的源。
③ 绝对不要把私有源写进 config 或 scripts 下,repositories 必须是 composer.json 的顶层键,否则 Composer 根本不读取。
保存后运行 composer update --lock 触发源重载,此时 Composer 才会真正去 repo.packagist.com 查询包元数据。
安装私有包
方法一:直接 require 已发布的版本
运行 composer require acme/utils:^1.2,前提是该包已在 Private Packagist 后台完成同步且存在 v1.2.0 或更高 tag。
方法二:安装开发分支
运行 composer require acme/utils:dev-main,前提是后台已开启「Enable development version support」且该分支已被 Resync 过——未手动触发 Resync 时,新 push 的 dev 分支不会自动出现。
方法三:强制刷新包列表
若刚添加新包但 install 失败,先执行 composer clear-cache,再运行 composer update --dry-run 查看是否识别到私有包;若仍失败,登录 Private Packagist 后台,进入对应仓库页点击「Resync」按钮,等待同步完成(通常几秒到一分钟)。

















