composer search 命令在 Composer 2.0+ 中已被彻底移除,执行即报错“Command 'search' is not defined”;因其依赖的 Packagist 搜索 API 自2022年底已关闭,官方明确不再恢复,替代方案是用 curl 调用 https://packagist.org/search.json?q=关键词 或直接访问 Packagist 网站搜索。

composer search 命令在 Composer 2.0+ 中已彻底移除,执行即报错 Command "search" is not defined。这不是配置问题,也不是镜像源失效——Packagist 官方早在 2022 年就关闭了搜索 API,该命令底层依赖已不存在。
为什么 composer search 现在一定用不了
从 Composer v2.0 开始,search 子命令被主动删除;v2.2 起连残留逻辑都清空。即使你降级到 Composer 1.x,返回结果也极简(无分页、无高亮、不支持 --only-name 或 --type),且只查包名和 description 前缀,实际不可靠。
- 所有声称“加
--only-name就能用”的教程,都基于已失效的旧版行为 -
composersearch(无空格)是第三方脚本,早已停止维护,不兼容当前 Packagist 接口 - 国内用户常误以为是镜像源问题,但换阿里云、腾讯云镜像也无法恢复该命令
替代方案:用 curl 直调 Packagist 搜索接口
Packagist 的公开 JSON 接口仍在运行,响应快、结构清晰,是目前最轻量可靠的命令行替代方式:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 基础用法:
curl -s "https://packagist.org/search.json?q=redis" - 带格式化(需装
jq):curl -s "https://packagist.org/search.json?q=log" | jq '.results[] | {name: .name, desc: .description}' - 没装
jq?至少加| head -n 20避免刷屏 - 国内用户建议加重试:
curl --retry 2 -s "https://packagist.org/search.json?q=pdf" - 注意:结果仅返回前 10 条,无分页参数;想多看,只能换关键词重试(如
q=pdf-reader)
搜到包名后,必须立刻用 composer show 验证
网页或 API 返回的“存在”,不等于“能在你项目里装得上”。真实约束只有本地 CLI 才能暴露:
-
composer show monolog/monolog:成功返回说明包存在、未废弃(abandoned字段会标出)、有稳定版本;失败则明确提示Package not found -
composer require --dry-run phpunit/phpunit:^9:模拟安装,提前发现 PHP 版本不兼容、依赖冲突、缺失扩展(如ext-gmp)等硬性问题 - 如果你配了国内镜像(如阿里云),
composer show会走镜像源,比curl更快、更准,且直接反映你本地环境的真实可用性 - 别复制网页上的
require行直接敲——移动端易多空格,symfony/console复制成symfony/ console会导致报错
真正省时间的做法:放弃 CLI 搜索,优先打开 Packagist 网页
https://packagist.org 是目前最可靠、信息最全的查找入口,它支持:
- description、readme、tags 全文检索(
composer search完全做不到) - 按 PHP 版本、是否 abandoned、下载量、更新时间筛选
- 点进包页一眼看到
require写法、最低 PHP 版本、LTS 标签 - 右上角
abandoned标签一目了然(比如ircmaxell/password-compat已弃用,但旧命令可能仍把它排前面) - 搜
JWT authentication可能命中lcobucci/jwt这类名字不带jwt但功能明确的包
复杂点在于:很多开发者花时间折腾怎么“恢复” composer search,其实不如花两分钟熟悉 Packagist 网站的筛选逻辑——比如勾选 “Only stable packages”、“Last updated in past 6 months”,这些操作在网页上一目了然,在 CLI 里反而要拼一堆参数还不一定有。

















