Composer怎么查看版本 Composer怎么检查是否安装【演示】

5次阅读

composer –version 只能查 composer 自身版本号和构建时间,不能查 php 版本、联网状态或 vendor/ 完整性;常见失败原因是 path 未配置或 composer.phar 未正确安装。

Composer怎么查看版本 Composer怎么检查是否安装【演示】

composer –version 能查什么、不能查什么

composer --version 输出的是 Composer 自身的版本号和构建时间,比如 Composer version 2.7.7 (2024-06-12 13:45:00)。它不反映 PHP 版本、不检查是否能联网、也不验证 vendor/ 是否完整——它只告诉你手头这个 composer 可执行文件是哪个版本、啥时候打包的。

常见错误现象:
windows 用户双击安装完却提示 'composer' is not recognized as an internal or external command,其实是 PATH 没配好,不是版本问题;
– 手动用 php composer-setup.php 安装后忘了重命名或加执行权限,--version 会直接报错而非显示版本。

  • 执行前先确认 which composermacos/linux)或 where composer(Windows)有输出路径
  • 若无输出,说明命令根本没进系统环境变量,此时 --version 必然失败
  • 手动安装的 composer.phar,需额外做软链或改名(如 Windows 下建 composer.bat)才能当命令用

composer show 查当前项目装了哪些包和版本

composer show 是查「已安装依赖」的正确命令,它读的是 vendor/ 目录 + composer.lock,不是 composer.json 里写的“想装什么”,而是“实际装了什么”。

使用场景:上线前核对版本、排查本地与测试环境差异、快速确认某个包是否真被装进来了。

  • 不加参数:composer show 列出所有已安装包,按字母排序,格式为 vendor/name → version
  • 查单个包:composer show monolog/monolog 显示其当前安装版本、描述、依赖、源码地址等
  • 只取版本号(适合脚本):composer show monolog/monolog --format=json | php -r "echo json_decode(file_get_contents('php://stdin'))->version;"
  • 容易踩的坑:如果项目还没运行过 composer installcomposer show 会返回空,不是命令错了,是 vendor/ 根本不存在

composer show –all vendor/package-name 查远程所有可用版本

composer show --all 加上包名,才是真正查“这个包在 Packagist 上发布过哪些版本”的方法。它走的是 API,不是本地缓存,所以能看到 dev-main2.10.0-beta11.27.0 等全部标签。

注意:composer show -all(不带包名)是另一个命令——它只列出你本地 vendor/ 里曾经下过的多个版本(比如之前 update 过旧版),跟远程真实版本无关。

  • 正确写法:composer show --all monolog/monolog,不是 --all 单独用
  • 如果提示 Package not found,先检查包名拼写,再确认是否用了私有仓库但没配置源
  • 国内用户若发现版本比 Packagist 少,可能是镜像同步延迟,临时切回官方源:composer config -g repo.packagist composer https://packagist.org
  • 想过滤出纯版本号列表?用 composer show --all monolog/monolog | grep '^s*[0-9]|dev|alpha|beta'(注意缩进和开头字符)

composer show –tree 查依赖树的前提和限制

composer show --tree 能画出某个包被谁依赖、又依赖了谁的结构,但它有硬性门槛:只在 Composer ≥ 2.2.0 中可用,且必须项目已安装依赖(即 vendor/ 存在)。

常见错误现象:
– 执行后没输出、也不报错 → 很可能 Composer 版本太低;
– 提示 Unrecognized option: --tree → 确实低于 2.2.0;
– 返回空 → 已升级但还没跑过 composer install

  • 先运行 composer --version 确认 ≥ 2.2.0,否则先 composer self-update
  • 指定包名更实用:composer show --tree monolog/monolog,只显示它的正向依赖路径
  • 别混用 --tree--platform--installed,参数冲突会导致静默失败
  • 需要反向查“谁依赖了这个包”?该用 composer depends vendor/package-name,不是 --tree

真正容易被忽略的点是:所有 show 类命令都依赖 vendor/composer.lock 的状态。没装过依赖、删了 vendor/、或者 lock 文件损坏,这些命令要么空转、要么报错——它们不是魔法,只是读文件的工具。

text=ZqhQzanResources