“package not found”本质是require未命中配置源:search只查packagist.org全局索引,require则严格按repositories顺序、minimum-stability及元数据匹配;需确认packagist.org是否显式禁用、vcs配置正确、镜像元数据已刷新。

composer require 报 “Package not found” 但 search 能搜到
这几乎可以确定不是包真没了,而是 composer require 没去你配的源里找——它和 composer search 完全是两套逻辑。
composer search 只查 packagist.org 全局索引,不校验 PHP 版本、扩展、稳定性或你的 repositories 配置;而 require 是真安装,会严格按 repositories 顺序 + minimum-stability + 实际元数据匹配执行。
- 运行
composer config repositories,确认输出里是否还包含"https://repo.packagist.org"—— 如果有,说明packagist.org没关,私有源再靠前也白搭 -
{"packagist.org": false}必须是repositories数组里的一个**独立对象**,且必须放在私有源之后、数组末尾 - 写成
"packagist": false或"packagist.com": false会被静默忽略,继续走官方源 - 别用
composer config --global repos.packagist false,这是全局污染,其他项目会崩
VCS 类型仓库(Git/GitLab)始终 404
报 404 的真实原因,90% 不是网络不通,而是第一步元数据读取失败 —— VCS 仓库不参与全局索引,只在你明确 require vendor/name 时才触发拉取。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
type必须写"vcs",写成"git"、"github"或漏掉,整条配置被忽略 - URL 必须是可
git clone的地址,且结尾**不能带.git后缀以外的路径**(如https://gitlab.example.com/myorg/utils.git✅,https://gitlab.example.com/myorg/utils.git#main❌) - 目标仓库根目录必须有合法
composer.json,且其中"name"字段要和你在require中写的完全一致(包括大小写、连字符) - 如果用了 GitHub/GitLab Token,确认已通过
composer config -g github-oauth.github.com YOUR-TOKEN正确配置
镜像源配置生效但新版本还是找不到
镜像站可能已同步,但 Composer 还在读缓存的旧 packages.json —— 元数据未刷新,版本列表就“看不见”。
- 检查当前用的是哪个镜像:
composer config -g repos.packagist(注意是复数repos,不是repo) - 项目级
composer.json若含"repositories"字段(哪怕空数组),会**完全屏蔽**全局镜像,此时要用composer config repo.packagist查项目级配置 - 旧模板残留的
"url": "https://packagist.phpcomposer.com"已停用,会导致请求卡死,得手动删掉 - 执行
composer update --refresh强制重载元数据,再跑composer update vendor/name
包只有 dev-main 却提示 not found
默认 "minimum-stability": "stable"(这是 Composer 默认值),会直接跳过所有非 stable 版本,报 “not found”,而不是 “版本不匹配”。
- 临时试装:运行
composer require vendor/name --stability=dev --prefer-source - 检查已有依赖是否锁死了兼容范围:
composer show vendor/name看是否已存在旧版,导致新版本无法满足约束 - 改
minimum-stability到dev是全局降级,容易引发其他包升级出问题,不推荐长期保留 - 更稳妥的做法是:先加
--no-update,再单独composer update vendor/name
真正卡住的地方往往不是“怎么配”,而是“配了但没生效”——比如 packagist.org 没关干净、repos 键名写错、VCS URL 多了个 #main,或者元数据缓存根本没刷新。这些点不逐个验证,光换镜像或清缓存只是碰运气。










