composer search 命令自 Composer 2.2 起已被 Packagist 官方永久移除,替代方案是用 curl 直调 https://packagist.org/search.json?q=关键词,并配合 composer show 和 composer require --dry-run 验证可用性。

composer search 命令已经彻底不能用了
它不是你装错了、没更新、镜像源不对,而是 Packagist 官方在 Composer 2.2 起永久关闭了搜索 API,命令直接报错:Command "search" is not defined。哪怕你降级到 Composer 1.x,结果也极简、无分页、不支持关键词过滤,实际价值很低。
- 别再翻旧教程敲
composer search log或composer search laravel—— 这些现在只会报错或返回几行无效文本 - 也别信某些文章说“加
--only-name就能用”——该参数在已移除的命令里根本不存在 - 更别折腾什么
composersearch(注意中间没空格)——这是早年第三方脚本,早已失效且不兼容当前 Packagist 接口
用 curl 直调 Packagist 搜索接口才是真替代
Packagist 的公开 JSON 接口仍在运行,响应快、结构清晰、无需额外安装工具,是目前最轻量可靠的方案。
- 基础命令:
curl -s "https://packagist.org/search.json?q=cache",把cache换成你要的关键词,比如pdf、redis、auth - 想看人话结果?加
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=queue",防偶发超时
搜到包名后,必须立刻用 composer show 验证
网页上看着热门、下载量高,不代表它能在你项目里装得上。真实约束只有 composer show 和 composer require --dry-run 才能暴露。
-
composer show monolog/monolog:成功返回说明包存在、未废弃(abandoned字段会标出)、有稳定版本;失败则明确提示Package not found -
composer require --dry-run phpunit/phpunit:^9:模拟安装,能提前发现 PHP 版本不兼容、依赖冲突、扩展缺失等硬性问题 - 注意:如果你配了国内镜像(如阿里云),
composer show会走镜像源,比 curl 更快、更准,且直接反映你本地环境的真实可用性
别只看搜索结果,打开 GitHub 仓库再判断一次
Packagist 页面不显示关键事实:作者是否还在维护、PHP 8.3 是否被支持、Issue 有没有人理、最近一次 commit 是不是三年前。
- 点进包页面,找到 GitHub 仓库链接(通常在右上角),直接跳转
- 看
Recent Commits时间 —— 如果最新提交是 2023 年,大概率已弃坑 - 翻
Issues列表 —— 有大量未关闭的 bug 或提问,且 maintainer 零回复,风险很高 - 复制包名时特别小心移动端:容易多空格(如
symfony/ console)或漏斜杠,导致composer require报错Could not find package
require,结果卡在依赖冲突里查半天——其实 composer show 一行就能提前拦住。











