必须在composer.json顶层写"packagist": false才能真正禁用packagist.org,该布尔开关大小写敏感、不可嵌套、不接受参数,设为false后所有包须显式声明仓库,否则报错。

composer.json 里写 "packagist": false 才算真正禁用
光删 repositories、改 config 命令、甚至设 repo.packagist 为 false,都不等于禁用。Composer v2+ 只认项目根目录 composer.json 顶层的 "packagist": false 这个布尔开关——它必须是根对象的直接子字段,不能嵌在 repositories 里,也不能写成 "packagist.org": false 或 "Packagist": false。
常见错误:
-
"repositories": [{"packagist.org": false}]→ 被忽略,packagist.org照常兜底 -
"repositories": {"my-mirror": "https://..."}→ 格式错误,整个repositories块无效 -
"packagist": true或"packagist": "false"(字符串)→ 不生效,只接受布尔false
正确写法示例:
{
"name": "my/app",
"packagist": false,
"repositories": [
{"type": "composer", "url": "https://packages.internal/"}
]
}
全局 config 里设 repo.packagist 为 null 或 --unset
项目级 "packagist": false 只管当前项目;CI 或多项目环境里,还得关掉全局默认行为。但 composer config -g repo.packagist false 是无效操作——Composer 会静默忽略布尔 false,继续 fallback 到 https://packagist.org。
必须用以下任一方式:
-
composer config -g --unset repo.packagist(删除字段) -
composer config -g repo.packagist null(设为合法空值)
执行后务必运行 composer clear-cache,否则旧缓存可能触发外网请求。验证是否生效:composer config -g repo.packagist 应无输出或返回 null,而非 false。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
禁用后 Could not find package 怎么办
这不是网络问题,是 Composer 彻底停止自动推导包归属。它不会扫描你所有仓库找包,而是严格按 repositories 数组顺序,只查第一个返回非 404 元数据的源。
- 私有 Satis 服务必须提供
/packages/list.json和/p/{vendor}/{package}/{version}.json接口 - 若某个包只在
packagist.org上(比如phpunit/phpunit),又不想开公网,临时加回:composer require phpunit/phpunit --repository=https://packagist.org - 检查镜像是否同步完整:访问
https://your-mirror.example.com/packages/list.json,确认目标包名出现在 JSON 数组里
注意:依赖链中某层间接依赖的包,也必须显式存在于你声明的仓库中——Composer 不递归探测。
为什么加了镜像源却还是连 packagist.org
因为没禁用默认源。只要 "packagist": false 没生效,Composer 就永远先查 packagist.org,哪怕你在 repositories 里把阿里云镜像排第一。
典型翻车场景:
- 只配了
composer config -g repos.aliyun ...,但没--unset repo.packagist -
composer.json里写了"packagist.org": false(错键名) - CI 环境里
COMPOSER_REPO_PACKAGIST环境变量被设为https://packagist.org,覆盖所有配置
验证是否真禁用:跑 composer update -vvv,看日志里有没有 Reading packages.json from https://packagist.org —— 有就是没关干净。
最易被忽略的点:禁用后,repositories 数组里每个源都得自己提供完整元数据,少一个 providers 条目,那个包就直接失败,没有 fallback。

















