composer search 命令在 Composer 2.2+ 中已被彻底删除,因 Packagist 自2022年底关闭搜索 API;替代方案是 curl 直调其公开接口或用 composer show 验证本地可用性。

composer search 命令在 Composer 2.2+ 中已彻底删除,任何尝试运行它都会报错 Command "search" is not defined ——这不是你配置错了,也不是镜像问题,是 Packagist 自 2022 年底关闭搜索 API 后,官方主动移除的功能。
为什么 composer search 会报错或返回空
你敲 composer search log 却看到报错,不是网络慢、不是没配镜像、也不是拼写错误。Packagist 的搜索接口早在 2022 年底就下线了,Composer 2.2(2023 年发布)起直接删掉了这个命令。旧教程里写的 --only-name、多词“与”逻辑、甚至 composer search laravel 能出结果——那些全不可用。
即使你降级到 Composer 1.x,返回的也只是前 10 条无分页、无版本、无 PHP 兼容性信息的原始结果,实际无法支撑选型决策。
替代方案:用 curl 直调 Packagist 搜索 API
最轻量、稳定、无需额外安装的方式是手动请求 Packagist 的公开接口:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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=cache" | jq '.results[] | {name: .name, desc: .description}'
不装 jq?至少加 head -n 20 看结构;国内用户建议加 --retry 2 防超时:
curl --retry 2 -s "https://packagist.org/search.json?q=log"
- 结果只返回前 10 条,且无分页参数;想多看几个包,只能换关键词重试(比如试
redis client而非仅redis) - 搜索词不支持布尔逻辑或字段限定,但支持英文关键词(中文基本无效)
- 接口响应快,但依赖网络直连;阿里云镜像(
https://mirrors.aliyun.com/composer/)不提供搜索能力,仅加速 install/update
真正该优先做的:用 composer show 验证本地可用性
你最终要的是“这个包能在我项目里装得上”,不是“它在 Packagist 上存在”。composer show 才是你本地环境的真实体检报告:
-
composer show monolog/monolog:成功返回即说明包名正确、源可达、未被弃用(页面右上角的 abandoned 标识会明确显示) -
composer show --all monolog/monolog:列出所有可用版本号,但注意它不显示每个版本的php约束(如"php": "^8.2"),需点进 Packagist 页面确认 -
composer show psr/:匹配所有psr/开头的已安装包,适合快速扫一遍命名空间 - 查私有包?必须提前在
composer.json的repositories中配置,或临时用--repository https://your-satis.example.com/packages.json(URL 必须是合法packages.json地址,填 Git URL 会报Could not parse version constraint)
别跳过 Packagist.org 网页端的关键字段
命令行只能给你名字和两行描述,而网页才是决策现场。搜索后点进包页,务必盯住这几个不起眼但致命的字段:
- 右上角的
Downloads / month和Last updated:下载量低 + 半年没更新 = 高风险 -
requires php: ^8.1:你的 PHP 是 8.3?它最新版只支持 8.1 —— 网站不会提醒,命令行更不会 - 右上角红色
This package is abandoned:composer show不显示这个字段,但它是弃坑铁证 - GitHub star 数 + Recent Commits + Open Issues 回复活跃度:比看下载量更反映真实维护状态
复制包名时最容易手抖——移动端常多空格,或把 symfony/console 复制成 symfony/ console,导致 composer require 报错。搜完立刻 composer show 验证,比对着网页抄十遍都可靠。

















