Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确地要求phar文件_Php_Phpunit_Require_Phar - Fatal编程技术网

Php 如何正确地要求phar文件

Php 如何正确地要求phar文件,php,phpunit,require,phar,Php,Phpunit,Require,Phar,phpunit已停止支持PEAR安装。这导致我们需要继续使用phpunit的phar安装。我们有一个包装脚本,它遍历许多目录,并在这些目录上调用phpunit可执行文件。包装脚本然后将所有生成的报告合并为一个报告 当phpunit与PEAR一起安装时,包装脚本顶部唯一需要的是 需要'PHP/CodeCoverage/Autoload.PHP' 然后,当包装脚本执行以下操作时 $writer = new PHP_CodeCoverage_Report_Clover(); $writer->p

phpunit已停止支持PEAR安装。这导致我们需要继续使用phpunit的phar安装。我们有一个包装脚本,它遍历许多目录,并在这些目录上调用phpunit可执行文件。包装脚本然后将所有生成的报告合并为一个报告

当phpunit与PEAR一起安装时,包装脚本顶部唯一需要的是

需要'PHP/CodeCoverage/Autoload.PHP'

然后,当包装脚本执行以下操作时

$writer = new PHP_CodeCoverage_Report_Clover();
$writer->process($codeCoverage, "${reportsDir}/clover-coverage.xml");
自动加载器将(大概)加载执行此代码所需的任何内容,我们将继续我们的快乐之路

然而,自从移动到phar安装之后,事情变得一团糟。起初我认为我可以只需要phar文件本身,一切都会很好

要求“phpunit-3.7.31.phar”

但是,这会导致在命中require行时立即执行phar文件,从而中止包含phpunit用法输出的包装脚本。由于不能在php require语句中使用通配符,因此我慢慢地构建了完成包装脚本所需的文件列表,并要求如下所示:

require'phar://phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';

当我从它的目录执行包装脚本并且phpunit.phar文件在同一个目录中时,这就起作用了。但是,尝试从其他目录执行它将失败,因为在include路径上找不到phar文件。我试图更改include路径,将.phar文件放在include路径上已经存在的位置,并为include中的phar文件提供一个绝对路径,如:

require'phar://actual/path/to/file/phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';

这些试图解决我的问题的尝试都没有奏效

如何包含.phar文件中的文件,以便从系统上的任何位置运行脚本?

另一个可以接受的答案是允许我使用phar文件中的类,而不包括我单独需要的所有内容

Ubuntu 12.04


PHPUnit 3.7.31(我们必须继续使用这个版本,但这并不会真正影响问题)

PHPUnit的PHAR只能作为一个库正确使用


还可以查看如何合并多个运行的代码覆盖率数据。

为什么不将其解压缩?我正在尝试使用PHPCOV,但它似乎不喜欢phpunit 3.7.31生成的.cov文件。您能否确认phpcov是否将使用phpunit 3.7.31中的.cov文件?否,phpcov不支持phpunit 3.7。您需要PHPUnit 4才能使PHPCOV正常工作。请注意,PHPUnit项目不再积极支持PHPUnit 3.7。