您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375composer show -p 只显示已安装包的符号链接路径,未安装则报错;真实路径需用 readlink -f 或 --prefer-source 安装;脚本化获取应组合 composer config vendor-dir 与包名。
直接运行 composer show -p vendor/package-name 报错 “Package not found” 是最常见原因——这个命令只对已安装到 vendor/ 下的包有效,不查 composer.json 里声明但未 install 或 update 的包。
composer install 或 composer update vendor/package-name
composer show -p vendor/package-name,比如 composer show -p monolog/monolog
在启用了 composer install --prefer-dist(默认)且包有 dist 包时,composer show -p 返回的是 vendor/vendor/name 目录,但它可能是指向 ~/.composer/cache/files/... 的符号链接。实际文件并不在 vendor/ 内部存储。
readlink -f vendor/vendor/name(Linux/macOS)或 dir vendor\vendor\name + 观察“快捷方式指向”(Windows)vendor/ 本地:安装时加 --prefer-source,之后 show -p 才返回可编辑的
真实路径show -p 对 path 类型仓库(如本地开发包)才稳定返回可写的物理路径当 show -p 不可用或需脚本化获取路径时,更可靠的方式是组合 composer config vendor-dir 和包命名规则:
vendor_dir=$(composer config vendor-dir) package_path="$vendor_dir/vendor/package-name" echo "$package_path"
vendor-dir 配置(默认为 vendor)vendor 和 name 小写+短横线组成,和 composer.json 中 name 字段完全一致vendor-dir(如 "vendor-dir": "lib/vendor"),必须先读取配置,不能硬编码 vendor/
某些包没提供标准目录结构(比如仅含 autoload.files),show -p 虽能返回路径,但里面可能没有源码——这时要看自动加载逻辑:
vendor/composer/autoload_static.php,搜索包名,找 $files 或 $classMap 数组项dirname(__DIR__) 开头,对应的就是该包在 vendor/ 下的真实子目录composer dump-autoload -o 后再查 autoload_psr4.php,键名即命名空间,值为目录路径路径问题本质是 Composer 加载机制和缓存策略的叠加结果,别只盯着 show -p 输出——它只是个快捷入口,不是文件系统真相的权威来源。