composer show --available仅检查远程源中包名是否存在,不涉及本地安装状态或版本识别问题;常见失败原因包括包名拼写错误、私有源未正确配置、缓存未清理或packagist索引延迟。

composer show --available 不是用来“排查包版本无法识别”的,它根本不会报错,也不会告诉你为什么某个包 composer show vendor/package 找不到——它只查 Packagist 上有没有这个包名,跟本地是否装了、能否识别完全无关。
为什么 composer show --available vendor/package 返回空或报错?
这不是包版本问题,是 Composer 连包名都没在源里匹配上。常见原因:
-
vendor/package拼写错误:大小写敏感(monolog/monolog≠Monolog/Monolog),斜杠方向错误(laravel-sanctum是 composer package name,但合法包名必须是laravel/sanctum) - 私有源没生效:repositories 未置顶、缺
"packagist.org": false、type写成git而非vcs,URL 少了末尾/ - 缓存卡住:执行
composer clear-cache后重试 - 包刚提交到 Packagist:最多有 60 秒延迟,稍等再查
composer show --available 和 composer show 的本质区别
前者查的是远程索引(Packagist 或你配的私有源的 packages.json),后者读的是本地 vendor/composer/installed.json(或 fallback 到 composer.lock)。两者断开时,现象完全不同:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
composer show vendor/package报[InvalidArgumentException] Package not installed→ 包没进installed.json,可能因--no-dev、安装中断、插件被禁用 -
composer show --available vendor/package无输出或报No package found→ Composer 根本没在当前源列表里找到这个名字,和本地 vendor 无关 - 想确认包是否存在且公开:直接访问 https://www.php.cn/link/f69b857233949c6a79158d4bb7ab5061,比命令更快更准
真正该用什么命令定位“版本无法识别”?
如果你发现 composer require vendor/package:1.2.3 失败,但不确定是版本不存在、稳定性限制,还是源没配对,优先跑这三条:
-
composer show --all vendor/package:看已知所有可用版本(含 dev 分支),确认 1.2.3 是否在列 -
composer config minimum-stability:若返回stable,而你要装的是dev-main,就得加--stability=dev -
composer -vvv require vendor/package:1.2.3 2>&1 | grep -A5 "Reading":看实际请求了哪个 URL,验证是否走对了源
注意:composer show --available 输出的版本列表,不反映 PHP 版本、扩展依赖或子依赖冲突——那些只在 composer require 或 composer update 阶段才校验。它只是个轻量级“名字存在性探针”,别指望它解释为什么装不上。










