该错误源于Composer在配置仓库中未找到指定包名,主因包括拼写错误、大小写不一致、包不在Packagist、私有包未配repositories、包已删除或废弃、版本不匹配及name字段缺失/格式错误。

Composer install 或 require 时提示 “The requested package could not be found”
这个错误不是网络超时,也不是权限问题,而是 Composer 根本没在它配置的仓库里查到你写的包名。最常见的情况是拼写错误、包名大小写不一致、或该包根本不在 Packagist 默认源中。
-
composer require vendor/name中的vendor或name写错(比如把monolog写成monolg) - 包名含大写字母但实际注册的是小写(Packagist 强制小写,
MyVendor/MyPackage会被转为myvendor/mypackage) - 该包是私有包,未配置自定义仓库(
repositories),也未启用 VCS 类型源 - 包已从 Packagist 删除,或作者设为 private,但本地
composer.json仍引用旧名
检查包是否真实存在于 Packagist
别靠记忆或文档,直接去 https://www.php.cn/link/5d2e892c81e5fafc51ab0973879563a0 搜索。注意:搜索框会自动小写化,且不支持通配符。如果搜不到,说明 Packagist 上没有这个公开包。
- 搜索时用全名,例如
symfony/console,而不是只输console - 点进包页面后,确认
type字段不是project(这种通常不可被 require) - 查看
abandoned标签——如果显示已废弃,可能需换用新包名 - 若包存在但最新版是
dev-main,而你锁定了^2.0,也会触发此错误(版本不匹配导致“找不到满足条件的版本”)
私有包或 Git 仓库未正确声明 repositories
Composer 默认只查 Packagist,不会自动扫描 GitHub 或 GitLab。要引入私有包,必须显式添加 repositories 配置,并指定类型。
- Git 仓库需用
vcs类型,且 URL 必须可被 Composer clone(支持 HTTPS / SSH) - 不能只写
"url": "github.com/user/repo",必须带协议:"https://github.com/user/repo" - 如果包在子目录下(如 monorepo),需在
composer.json中设置type: "metapackage"或使用package类型手动定义 - 执行
composer clear-cache后再试,避免缓存了旧的仓库元数据
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/myorg/my-private-package"
}
],
"require": {
"myorg/my-private-package": "^1.0"
}
}
composer.json 中 name 字段缺失或与 require 不一致
如果你正在开发一个要被其他项目 require 的包,它的根目录 composer.json 必须有正确的 name 字段,且格式为 vendor/name(全小写、无空格、仅含字母数字和短横线)。
- 漏写
"name": "acme/utils"→ Composer 无法将该包注册进任何仓库 - 写了
"name": "Acme/Utils"→ Packagist 会拒绝提交,或提交后被转为acme/utils,但你的 require 还在用大写 - 本地测试时用
path仓库,但路径未指向含有效composer.json的目录 - 运行
composer validate可快速发现name格式或缺失问题










