【发布时间】:2021-02-03 14:11:40
【问题描述】:
我想从控制器运行我的测试并在浏览器中显示输出。
我尝试使用此代码:
<?php namespace App\Controllers;
class Home extends BaseController
{
/**
* Run tests and display output.
*/
public function test(): string
{
$out = [];
exec('./vendor/bin/phpunit', $out, $ret);
return implode('\n', $out);
}
}
但是当我转到 localhost:8080/Home/test 时,它会返回一个空页面。
$ret 变量在 exec 之后包含 1,$out 数组保持为空。
如果我从命令行调用./vendor/bin/phpunit,它可以正常工作。
我很确定这是路径问题,也可能是权限问题。我也尝试了路径../vendor/bin/phpunit 和../../vendor/bin/phpunit,但没有任何变化。
更新:
将方法的内容改为
return `./vendor/bin/phpunit`;
抛出异常,因为它返回 null 而不是字符串。
把phpunit和phpunit.bat放到public文件夹里面,把代码改成
return `phpunit`;
返回字符串Could not open input file: [project path]\public\/../phpunit/phpunit/phpunit
更新 2:
最后一个错误是通过将文件夹 vendor/phpunit 复制到项目根目录中的一级来解决的。但它仍然返回 null。
【问题讨论】:
标签: php codeigniter phpunit codeigniter-4