composer --version是唯一可靠查composer自身版本的方式,输出如“composer version 2.7.7 (2024-06-12 13:45:00)”,其中2.7.7为真实语义化版本号,括号内为官方phar构建时间戳,与本地安装时间无关;composer -v是verbose开关,不显示版本,-v在2.5+已弃用。

composer --version 是唯一可靠查自身版本的方式
想确认当前系统里跑的是哪个 Composer,直接敲 composer --version 就行。它不依赖项目目录、不读 composer.json,输出形如 Composer version 2.7.7 (2024-06-12 13:45:00)——其中 2.7.7 是真实语义化版本号,括号里是官方 PHAR 构建时间,和你本地安装时间无关。
常见踩坑点:
-
composer -v不是查版本,它是 verbose 开关,单独执行等价于composer list -
composer -V在 Composer 2.5+ 已弃用,行为不稳定,别用 - 如果提示
command not found: composer,不是版本问题,是 PATH 没配好或根本没装 - Mac 上用 Homebrew 装完没
brew link composer,which composer会为空
composer show --platform 查 PHP 环境而非 Composer 版本
这个命令常被误当成查 Composer 版本的替代方案,其实它只输出当前 PHP 运行环境信息:php 版本、已启用扩展(如 pdo_mysql、openssl)及其版本。典型用途是验证是否满足某个包的 ext-gd 等扩展要求。
注意区分:
-
composer --version→ Composer 自身版本 -
composer show --platform→ PHP 及扩展版本 - 两者输出格式完全不同,混用会导致排查方向错误
composer show vendor/package 查已安装包的具体版本
要确认项目里某个包(比如 monolog/monolog)实际装的是哪个版本、commit、autoload 配置或依赖关系,必须指定全小写 vendor 名:composer show monolog/monolog。
关键细节:
- 不加包名时,
composer show默认等价于--all,会扫描 Packagist,慢且干扰大 - 包名必须全小写、带 vendor,
Monolog/Monolog或monolog都会报错 - 若包是 path 类型本地加载,
source字段显示的是本地路径,不是 Git URL - 如果
minimum-stability设为dev,version可能显示dev-main而非语义化版本
composer show -a vendor/package 查远程所有可用版本
想知道某个包在 Packagist 上有哪些版本可选(包括 v4.0.0、dev-main、2.10.0-beta1),用 composer show -a monolog/monolog。
这个命令直连 Packagist API,绕过 minimum-stability 限制,也不依赖本地是否安装过该包:
- 拼错包名会直接报
Package not found,不是网络问题,是 Packagist 上真没这个命名空间 - 国内镜像源(如阿里云)可能有数小时延迟,刚发布的版本在官方源可见,但镜像还没同步
- 私有包查不到?检查
composer.json的repositories配置和 token 是否有效
composer show)加不加参数、大小写、是否带 -a,背后调用的逻辑完全不同——它既不查本地缓存,也不走统一接口,而是根据参数切换数据源和过滤策略。执行前多看一眼 help 里对应参数的说明,比事后翻日志快得多。











