composer scripts 中的命令通过 composer run-script 或 composer 调用,composer 在项目根目录下执行,自动识别 vendor/bin/ 中的可执行文件(如 phpunit),无需全路径;自定义脚本需在 composer.json 的 scripts 字段定义,如 "test": "phpunit --colors=always",运行 composer test 即可触发。

composer scripts 里写的命令怎么被调用
Composer 本身不执行包内部的 CLI 命令,它只负责下载和自动加载。但很多包(比如 phpunit/phpunit、laravel/pint、phpstan/phpstan)会在自己的 composer.json 里声明 bin 字段,把可执行脚本路径暴露出来。Composer 安装后,会把这些脚本软链接到项目根目录的 vendor/bin/ 下——你直接运行 vendor/bin/phpunit 就能触发。
- 确认包是否提供二进制入口:查看该包的
composer.json是否有"bin": ["bin/phpunit"]这类字段 - 安装后检查
vendor/bin/目录是否存在对应文件,比如vendor/bin/phpunit - 直接执行时建议加
./前缀:./vendor/bin/phpunit --version,避免系统 PATH 里旧版本干扰 - 如果报
Permission denied,说明脚本没可执行权限,Linux/macOS 下运行chmod +x vendor/bin/phpunit
为什么 composer require 后不能直接敲 phpunit 运行
因为 phpunit 不在系统 PATH 里,它只存在于 vendor/bin/。你没把它加进环境变量,shell 就找不到这个命令。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时方案:用
vendor/bin/phpunit全路径调用(最安全,无歧义) - 开发机可加
export PATH="./vendor/bin:$PATH"到 shell 配置(注意是当前目录.,不是项目绝对路径) - 别全局改
PATH指向某个项目的vendor/bin——多个项目会冲突 - 某些 IDE(如 PHPStorm)能自动识别
vendor/bin并补全,但终端里不生效
scripts 字段能不能代理调用 vendor/bin 下的命令
可以,而且这是推荐做法。你在项目根目录的 composer.json 的 scripts 里写一条命令,Composer 会在当前目录下执行它,自然就能找到 vendor/bin/ 中的可执行文件。
- 示例配置:
"scripts": { "test": "phpunit --colors=always", "cs-fix": "pint --preset=laravel" } - 然后运行
composer test,Composer 会自动在vendor/bin/下找phpunit并执行 - 所有
scripts命令默认工作目录就是项目根目录,不需要cd vendor/bin或写完整路径 - 如果命令含空格或参数(如
--no-interaction),整条必须用双引号包裹,否则 JSON 解析失败
遇到 “command not found” 但 vendor/bin 下明明有文件
大概率是脚本第一行的 shebang 错了,或者 PHP 解释器路径不匹配。比如 vendor/bin/phpunit 开头是 #!/usr/bin/env php,但你的系统里 php 命令不可用,或指向了错误版本。
- 先手动运行
head -1 vendor/bin/phpunit看 shebang 行 - 再运行
which php和php -v,确认 CLI PHP 可用且版本符合包要求 - 如果 shebang 是
#!/usr/bin/env php7.4但系统只有php8.1,就手动改成#!/usr/bin/env php - Windows 用户注意:Git Bash 能跑,CMD/PowerShell 默认不支持
vendor/bin/下的 Unix 风格脚本,得用php vendor/bin/phpunit显式调用










