composer search 命令自 Composer 2.2 起已被移除,因 Packagist 关闭搜索 API;应改用 curl -s "https://packagist.org/search.json?q=关键词" 或 composer show 包名 验证可用性。

composer search 命令已失效,别再敲了
从 Composer 2.2 开始,composer search 命令已被彻底移除,执行会直接报错:Command "search" is not defined。这不是你环境没配好,也不是镜像源问题——Packagist 官方关闭了全文搜索 API,底层依赖也下线了。继续查文档或翻旧教程,只会浪费时间。
用 curl + Packagist API 替代,一行就能搜
最轻量、稳定、无需额外安装的方式是直调 Packagist 的公开搜索接口:
curl -s "https://packagist.org/search.json?q=cache" | jq '.results[] | {name: .name, desc: .description}'
-
q=cache可换成任意关键词,如http、pdf、auth - 不装
jq?用head -n 20看原始 JSON 结构也够判断 - 结果按相关性排序,但只返回前 10 条,且无分页参数;想多看几条,只能换词重试(比如加
client或library) - 国内用户建议加
--retry 2防超时:curl --retry 2 -s "https://packagist.org/search.json?q=log"
本地验证比远程搜索更靠谱
你真正要的不是“存在这个包”,而是“它能在我项目里装得上”。所以优先用这两个命令:
- 查包是否存在、是否活跃维护:
composer show monolog/monolog—— 成功返回即说明可用,失败则明确提示Package not found - 模拟安装,检查 PHP 版本、依赖冲突等真实约束:
composer require --dry-run phpunit/phpunit:^9 - 注意:
composer show走的是你当前项目的仓库配置(含镜像源),响应快、结果准,且能直接看到abandoned标识和最新稳定版本
别信网页搜索结果里的“热门第一”
Packagist 网站首页搜出来的 top 包,往往只是下载量高,未必适合你:
- 页面不标
abandoned,可能点进去才发现作者已弃坑 - 显示所有历史版本,但你的 PHP 是 8.3,它最新版只支持 8.1 —— 网站不会提醒
- 复制包名易出错:移动端常多空格,或把
symfony/console复制成symfony/ console,导致require报错 - 真要深度评估,打开包的 GitHub 仓库,看
Issues是否有近期回复、Recent Commits是否活跃,比看 stars 数实在得多
最省时间的做法,是把 curl 封成 shell 别名,或者养成习惯:搜完立刻 composer show 验证——毕竟最终要敲进 require 的,不是网页标题。










