composer show -i vendor/package 可直接输出包的绝对安装路径,即 composer.json 所在的顶层目录;不加 -i 仅显示元信息且无路径,全局包需用 composer global config home 查,符号链接需用 readlink -f 展开。

composer show 命令查不到安装路径?用 -i 参数才是关键
默认 composer show vendor/package 只显示版本、描述和依赖,不输出路径。必须加 -i(即 --install-path)才能看到实际安装位置。这个参数容易被忽略,导致反复翻 vendor/ 目录碰运气。
-
composer show -i vendor/package:直接输出包的绝对路径,比如/path/to/project/vendor/vendor/package - 不带
-i时,即使包已安装,也只显示元信息,路径字段为空或压根不显示 - 如果提示
Package not installed,说明该包未被当前项目 require,或是被 require-dev 且未在 dev 模式下运行
vendor/autoload.php 里找不到包路径?别从这里反推
有人试图通过 vendor/autoload.php 或生成的 classmap 查源码位置,这条路走不通。Composer 的 autoloader 是映射关系,不是路径反射;它可能指向 src/、lib/ 甚至 dist/ 下的文件,和包根目录不一致。
- 包的实际代码入口可能在
vendor/vendor/package/src/,也可能在vendor/vendor/package/根目录,取决于其autoload配置 -
composer show -i返回的是包的**顶层目录**,也就是composer.json所在位置,这才是你该 cd 进去的地方 - 想看具体类文件在哪?先用
composer show -i定位包目录,再查它的composer.json中的autoload字段
全局安装的包路径和项目内完全不同
全局包(如 phpunit、larastan)不走项目 vendor/,而是装在 Composer 全局目录里,composer show -i 在项目中对它们无效。
- 查全局路径:运行
composer global config home,返回类似/home/user/.composer的路径,全局包在vendor/子目录下 - 全局命令的二进制文件通常软链到
~/.composer/vendor/bin/,可直接ls -l $(which phpunit)确认真实路径 - 项目内执行
composer global show -i vendor/package会报错——global命令不支持-i,这是常见误操作
路径含 symlink 怎么办?用 readlink -f 看真实位置
有些包(尤其是开发中用 path 仓库类型或 composer link)会以符号链接形式出现在 vendor/,composer show -i 显示的是链接路径,不是源码真实位置。
- 拿到
composer show -i输出后,用readlink -f /path/to/vendor/package(Linux/macOS)或Get-Item /path/to/vendor/package | Resolve-Path(PowerShell)展开 symlink - 常见于本地开发调试:你
composer link my/package后,vendor/my/package是个链接,真正代码在~/code/my-package - IDE 跳转失败、断点不生效,十有八九是卡在这层 symlink 没展开
composer show -i,再根据返回值决定要不要 readlink 或翻 composer.json。










