
Composer 的 exec 命令用于直接运行 vendor/bin/ 下的可执行文件,自动定位路径、匹配 PHP 解释器,支持传参和跨平台,简化如 phpunit 等工具调用,避免 PATH 或版本问题。
Composer 的 exec 命令用来**直接运行 vendor/bin/ 目录下的可执行文件**,无需手动指定完整路径,也不用管 PHP 版本或环境变量是否配置正确。
很多 Composer 包(比如 PHPUnit、PHPStan、Laravel Sail、Symfony CLI)安装后会在 vendor/bin/ 生成一个可执行脚本。以前你可能得这样运行:
而用 composer exec 就可以简化为:
它会自动查找并执行匹配的二进制文件,还支持传参,比如:
composer exec phpunit -- --testdox有些系统没把 vendor/bin 加入 PATH,或者用了不同 PHP 版本导致命令找不到。composer exec 内部用当前 Composer 使用的 PHP 解释器来执行,避免环境混乱。它本质上是帮你做了:
vendor/bin/
xxx 的绝对路径虽然 exec 本身不读 composer.json 的 scripts,但你可以把它和 scripts 结合用。例如在 composer.json 中写:
然后运行 composer test,就等价于 composer exec phpunit -- --stop-on-failure。适合团队统一命令入口。
phpunit 和 phpunit7),它默认选第一个匹配的,不提示冲突vendor/bin/ 下的文件都能直接 exec —— 比如 shell 脚本需系统支持,Windows 上某些 .bat 可能行为不同-v 参数: composer exec -v phpunit
基本上就这些。不用额外配置,不污染全局环境,适合 CI/CD 或本地快速调试。