Composer如何装phpmd_Composer phpmd安装配置方式【入门】
使用Composer全局安装phpmd/phpmd,而非项目内安装。需将Composer的bin-dir加入PATH环境变量,否则无法直接调用命令。全局安装后需注意pdepend/pdepend版本冲突,可移除全局pdepend重装,或改用局部安装显式调用。规则文件可通过--ruleset指定,注意命名空间和大小写敏感。
先说结论:不推荐直接装 phpmd,正确做法是用 Composer 全局安装 phpmd/phpmd 包。装完之后,务必确保 PHP 的二进制路径以及 Composer 的 bin-dir 都在系统的 PATH 环境变量里——否则你在终端里敲 phpmd 的时候,只会得到一个冰冷的 "command not found"。
为什么不能用 composer require phpmd/phpmd 在项目里装?
很多人习惯性地在项目目录下执行 composer require phpmd/phpmd,这其实是个误区。phpmd 是命令行工具,不是项目的依赖库。把它塞进 vendor/ 目录下,会引发一连串麻烦:
- 每次运行都得写完整路径,比如
./vendor/bin/phpmd,手都酸了 - 每个项目重复安装一份,硬盘空间不值钱,但管理起来很蛋疼
- 升级或卸载要逐个项目操作,版本冲突是迟早的事
- 最要命的是,你在任意目录下都跑不了
phpmd --version,这工具等于废了一半
全局安装的正确步骤,一步都别省
先把 Composer 的全局 bin 目录搞到手,这是后面一切的基础:
- 执行
composer config -g bin-dir,常见的路径是~/.composer/vendor/bin或~/composer/vendor/bin - 把这个路径加到 Shell 的
PATH里。如果你用 zsh,就在~/.zshrc末尾加一行export PATH="$HOME/.composer/vendor/bin:$PATH",然后别忘了source ~/.zshrc - 接下来正式安装:
composer global require phpmd/phpmd - 验证一下:
phpmd --version应该输出类似2.15.0的信息
遇上 Class 'PDepend\TextUI\Command' not found 怎么办?
这个报错通常是因为 pdepend/pdepend 版本冲突了。常见场景是全局 Composer 里同时装了多个依赖 pdepend 的工具,比如 phpcpd、phploc。解决方案只有两条:
- 方案一:删掉全局
pdepend,执行composer global remove pdepend/pdepend,然后重装phpmd - 方案二:改用局部安装加显式调用,也就是
composer require --dev phpmd/phpmd,然后每次用./vendor/bin/phpmd src text codesize来运行
需要特别提一句:不要去手动 composer global require pdepend/pdepend,phpmd 会自动拉取兼容版本,手动操作反而容易把依赖搞乱。
规则配置文件(phpmd.xml)怎么放?怎么指定?
规则文件可以是自定义的 XML,也可以用内置的规则集,比如 codesize、unusedcode。这里有几个关键点:
- 默认情况下不需要配置文件,直接跑
phpmd src text unusedcode就能工作 - 如果你想用自定义规则,把文件保存为
phpmd.xml,放在项目根目录或任意路径,然后用--ruleset参数指定:phpmd app/ xml ./phpmd.xml - XML 文件里命名空间不能写错:
。少了xmlns属性,解析会失败,而且连个报错提示都没有,很坑 - 规则名大小写敏感:
cleancode是有效的,但写成CleanCode就会直接报RuleSetNotFoundException
最后说句实在话:最容易被忽略的就是 PATH 配置和 pdepend 版本冲突。一旦卡在 "command not found" 或者类找不到的问题上,优先检查这两处,比你反复卸载重装要高效得多。


































