【问题标题】:Codeigniter 4: run phpUnit from controllerCodeigniter 4:从控制器运行 phpUnit
【发布时间】: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


    【解决方案1】:

    exec、shell_exec 等出于安全原因被禁用。如果你有root权限,你可以在php.ini文件中启用它们(搜索disabled_functions),否则没有什么可做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2011-06-29
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多