phpstan全家桶不能全局安装,必须本地安装;因其依赖项目根目录的phpstan.neon、vendor/autoload.php路径及composer自动加载链路,全局安装会导致配置失效、扩展不加载、扫描范围受限且无报错。

composer global require 不能装 PHPStan 全家桶
PHPStan 不支持全局安装用于项目分析——它必须本地安装,否则 phpstan analyse 会静默跳过配置、不加载扩展、只扫 src/、甚至完全不报错。原因很直接:phpstan.neon 只在当前项目根目录读取;vendor/autoload.php 的路径硬编码在生成的 autoloader 中;Laravel 项目依赖的 nunomaduro/larastan 等扩展,必须通过本地 composer require 注册进 Composer 的自动加载链路。全局装了 phpstan/phpstan,只会让你误以为“工具就位”,实际运行时连 app/Models/User.php 都不会扫描。
哪些静态分析工具真能用 composer global require
真正适合全局安装的,仅限于「独立 CLI 工具」:它们不依赖项目结构、不读 composer.json、不走 vendor/autoload.php。这类工具的可执行文件是自包含的,比如:
-
laravel/installer→ 提供laravel new命令,纯脚手架,无项目耦合 -
friendsofphp/php-cs-fixer→php-cs-fixer fix直接读文件、改文件,不 autoload 任何项目类 -
phpunit/phpunit→ 虽然常本地装,但全局装后也能跑(前提是phpunit.xml路径正确),因它只依赖自身 bootstrap -
deployer/deployer→dep命令启动后自己加载部署脚本,不依赖目标项目 vendor
注意:phpstan、psalm、phan 全都不在此列——它们的设计就是项目绑定的。
PATH 配不配对,决定全局命令能不能用
就算你装的是合法工具,90% 的 command not found 都卡在 PATH 上。Composer 不会自动改系统环境变量,它只把可执行文件链接到:~/.composer/vendor/bin(Linux/macOS)或 %APPDATA%\Composer\vendor\bin(Windows)。验证和修复步骤如下:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认真实路径:
composer global config bin-dir --absolute - Linux/macOS:追加到
~/.zshrc或~/.bash_profile:export PATH="$HOME/.composer/vendor/bin:$PATH",然后source ~/.zshrc - Windows:在「系统属性 → 高级 → 环境变量」中,用户变量
Path新增该绝对路径(不能用%APPDATA%) - 新开终端,运行
echo $PATH | grep composer或where dep验证
IDE(如 PHPStorm)通常不继承 shell 的 PATH,需单独在「PHP → CLI Interpreter」里指定完整路径,否则点击「Run」仍会失败。
想跨项目复用静态分析?别碰 global,用脚本 + 本地 require
所谓“全家桶”跨项目复用,本质是避免每个项目重复写 composer require --dev 和维护 phpstan.neon。可行做法是:
- 用 Composer 的
path类型仓库:把统一配置和封装好的分析命令打包成私有包(如myorg/static-analysis),再在各项目中composer require --dev myorg/static-analysis,并声明"repositories": [{"type": "path", "url": "../static-analysis"}] - 写一个项目无关的 shell 脚本(如
run-static-check),cd 进项目后调用./vendor/bin/phpstan analyse,再把它软链到~/.composer/vendor/bin/——这样你全局敲命令,实际执行的仍是本地 vendor 下的二进制 - CI 流程中统一用
composer create-project拉取预配置模板,而非依赖全局状态
最危险的捷径,就是以为 composer global require phpstan/phpstan nunomaduro/larastan 装完就能一劳永逸。它不报错,但也不工作——这种无声失效,比报错更难排查。










