
composer search 命令本身已废弃,自 Composer 2.2 起默认禁用,直接运行会报错 Command "search" is not defined.。别再试了,它不工作。
为什么 composer search 不可用
Composer 官方移除了该命令,主因是搜索逻辑依赖 Packagist 的旧 API,维护成本高且结果不可靠。现在所有包发现行为都转向网页端或第三方工具。
- Composer CLI 不再内置搜索能力,
composer search不是“暂时失效”,而是彻底下线 - 即使降级到 Composer 1.x,
search返回的结果也常为空或严重滞后(例如搜laravel/sanctum可能压根不出现) - 本地
composer.json或已安装包不影响搜索——它本来就不查本地,只连 Packagist,而这个通道已关闭
替代方案:用 Packagist 网页搜索最可靠
所有公开包都托管在 https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19,这是唯一权威来源。搜索体验远优于旧 CLI:
- 支持关键词、作者名、标签(如
tag:cache)、PHP 版本兼容性筛选 - 结果页直接显示安装命令:
composer require vendor/package - 点进包页能看到
require推荐版本、依赖树、GitHub 源链接、最近更新时间 - 搜
http client这类泛词,可配合过滤器缩小范围(比如选 “Stable only” 或 “PHP 8.1+”)
命令行里真想搜?用 curl + Packagist API(临时应急)
Packagist 提供只读 JSON API,虽非官方推荐,但能快速查包是否存在:
curl "https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19/search.json?q=doctrine+orm"
返回 JSON 中的 results 数组就是匹配项,含 name、description、downloads。注意:
- API 无认证,但有请求频率限制(约 10 次/分钟),别写循环脚本狂刷
- 不支持分页参数,
q参数不能含空格以外的特殊字符(如+需 URL 编码为%2B) - 返回结果不含版本详情,要确认是否支持 PHP 8.3 或 Laravel 11,仍得点进网页看
require字段
真正卡住你的往往不是“找不到包”,而是搜到了却装不上——比如版本冲突、PHP 版本不匹配、或包已弃用。这时候盯着 Packagist 页面右上角的 require 和 abandoned 标签,比反复试 composer search 有用得多。










