发布于2026-07-14 阅读(0)
扫一扫,手机访问
搞过PHP项目开发的,多半都遇到过这种情况:执行composer depends某个包,结果返回空,或者干脆报错Package not found。这时候先别急着骂命令不好使,问题大概率不是工具出了问题,而是目标包压根就没出现在项目的vendor/和composer.lock里。这几个坑最常见:包名大小写和斜杠方向没写对——monolog/monolog和Monolog/monolog完全是两码事;包只声明在require-dev里,可你执行的是composer install --no-dev,那它当然不在;有些包被replace或provide给覆盖了,比如psr/log会被monolog/monolog提供,这时候你去查psr/log自然是空的,得改查提供者;还有一种最基础的——当前目录根本就不是项目根目录,缺了composer.json和composer.lock,那命令往哪儿查呢?

命令返回空或 Package not found,不是命令失效,而是目标包根本没出现在 vendor/ 和 composer.lock 中。常见原因有:
• 包名拼写错误:大小写、斜杠方向必须完全一致,monolog/monolog ≠ Monolog/monolog 或 monolog-monolog
• 包只声明在 require-dev,但你执行过 composer install --no-dev,导致未安装
• 包被 replace 或 provide 覆盖(如 psr/log 被 monolog/monolog 提供),此时查 psr/log 会为空,得改查提供者
• 当前目录不是项目根目录(缺少 composer.json 和 composer.lock)
composer depends --tree vendor/package-name 输出的是当前 composer.lock 中真实存在的反向链路,每一层都必须对应 lock 文件里的一个已解析条目。它不会推导理论路径,也不会显示被 provide 中断的下游。
• 如果树在某一层突然停止(比如只显示 lara vel/framework 就没了),大概率是它通过 "provides": {"psr/log": "*"} 声明满足了目标包,Composer 不再向下追踪
• 缩进代表声明层级,不是安装份数;同一包在不同缩进重复出现,只说明多个上游分别引入,是否冲突得看 composer show vendor/package-name 查实际版本
• 终端宽度太窄会导致缩进错位,建议用 composer depends --tree vendor/package-name | less -S
composer depends 默认不标记依赖类型,所有结果都算作"已安装依赖"。要精准筛选:
• composer depends vendor/package-name --link-type=require —— 只看生产环境依赖链
• composer depends vendor/package-name --link-type=require-dev —— 只看开发工具链引入路径
• --format=json 输出中字段 linkType 明确为 "require" 或 "require-dev",适合脚本解析
注意:--dev 和 --no-dev 在 depends 中无效,它们只对 composer install 或 composer why 生效
想确认某个包是不是你自己在 composer.json 里写的,或者理清从 root 到它的完整路径,composer why --tree vendor/package-name 是唯一可靠方式。
• 它要求目标包必须已安装,否则静默无输出(不是报错)
• 输出末尾出现 your-project-name dev-main,才说明源头是你自己的 require 或 require-dev
• 加 --dev 才能查仅由开发依赖引入的路径(例如 phpunit/phpunit → sebastian/exporter → psr/log)
• 遇到 provide 时它也会中断,这时得退回到 composer show lara vel/framework | grep provides 手动查提供关系
最后提一个容易被忽视的点:vendor/composer/installed.json 是快照,不是权威源——它只反映上一次 composer install 或 composer update 的结果。如果你刚改完 composer.json 但没运行更新,所有依赖分析命令看到的都是旧状态。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8