composer run-script test 报“command not found”根本原因不是 phpunit 未安装,而是脚本中写 "test": "phpunit" 依赖全局 path,而 ci 或新环境无全局 phpunit;正确写法应为 "test": "vendor/bin/phpunit",windows 建议用 php vendor/bin/phpunit,并确保可执行权限与参数分隔符 -- 使用正确。

composer run-script test 为什么报 Command not found
根本不是 PHPUnit 没装,而是 composer.json 里写的 "test": "phpunit" 这种写法默认去 PATH 里找全局命令——CI 环境或新机器上几乎肯定不存在。Composer 不会自动把 vendor/bin 加进 PATH。
- 正确写法必须用绝对路径:
"test": "vendor/bin/phpunit" - Windows 用户注意路径分隔符,Git Bash 下可用
vendor/bin/phpunit,CMD/PowerShell 建议改用php vendor/bin/phpunit - 如果执行时提示
Permission denied,说明脚本没可执行权限:运行chmod +x vendor/bin/phpunit(macOS/Linux),CI 脚本里建议加chmod -R +x vendor/bin/ - PHP 脚本类命令(如
"test": "php test-runner.php")不会受权限影响,但得手动require __DIR__ . '/vendor/autoload.php';
传参给 phpunit 脚本总失败?关键在那个 --
composer run-script test --filter=MyTest 这种写法永远收不到参数——--filter 被 Composer 当作自身选项吃掉了,phpunit 根本看不到。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须用双横线
--显式分隔:composer run-script test -- --filter=MyTest - 如果脚本值是字符串(如
"test": "vendor/bin/phpunit"),参数靠 shell 解析,带空格得加引号:composer run-script test -- --filter="My Test" - 更稳的方式是用数组语法(Composer 7+ 支持):
"test": ["@php", "vendor/bin/phpunit"],参数会原样追加到末尾 - PHP 脚本中接收参数:从
$argv[1]开始($argv[0]是 PHP 可执行路径),建议开头加array_shift($argv)
脚本名明明写了却提示 Script not found
Composer 不模糊匹配、不自动补全、不提示拼写建议——错一个字符、多一个空格、大小写不对,就直接报 Script not found: xxx。
- 先跑
composer run --list(推荐)或composer run-script --list,看输出里有没有你的脚本名 - 脚本名含冒号(如
"ci:lint")或短横线(如"post-update-cmd"),Windows 下必须加双引号:composer run-script "ci:lint" - 检查
composer.json中"scripts"是顶层字段,没被缩进到"require"或其他块里 - 别用中文标点、全角空格、不可见 Unicode 字符——复制粘贴容易带进来,用编辑器显示不可见字符功能排查
为什么本地能跑,CI 却 Class not found
CI 默认执行 composer install --no-dev,导致两件事同时失效:phpunit 没装、autoload-dev 映射没加载——所以测试类和 PHPUnit 自身都找不到。
- PHPUnit 必须用
--dev安装:composer require --dev phpunit/phpunit:^10 -
composer.json里确认有"autoload-dev": { "psr-4": { "Tests\": "tests/" } },且改完后运行composer dump-autoload -
phpunit.xml必须放在项目根目录,文件名只能是phpunit.xml或phpunit.xml.dist,不能是tests/phpunit.xml - CI 脚本里加一行
composer install --no-interaction(不加--no-dev),或明确指定composer install --no-interaction --with-all-dependencies
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










