【发布时间】:2020-04-05 17:38:30
【问题描述】:
我在将 PHAR 包含到我的应用程序引导代码中时遇到了问题。我正在尝试包含 phpunit/phpunit PHAR 以在我的应用程序中提供 PHPUnit 类。
鉴于我有以下目录结构:
/path/to/code/
app.php
phpunit
phpunit 是作为 PHAR 的 PHPUnit,app.php 包含:
<?php
$phar = 'phar://' . __DIR__ . '/phpunit';
include $phar;
assert(class_exists('\\PHPUnit\\Framework\\TestCase'));
我收到以下错误:
PHP Warning: include(phar:///path/to/code/phpunit): failed to open stream:
phar error: no directory in "phar:///path/to/code/phpunit",
must have at least phar:///path/to/code/phpunit/ for root directory
(always use full path to a new phar) in /path/to/code/app.php on line 4
但是当我将 PHAR 重命名为 phpunit.phar 并包含它而不是使用
<?php
$phar = 'phar://' . __DIR__ . '/phpunit.phar';
include $phar;
assert(class_exists('\\PHPUnit\\Framework\\TestCase'));
代码运行良好,TestCase 类存在。
为什么第一个版本不起作用,关于“新 phar 的完整路径”的错误是什么意思?
我的 PHP 版本是 7.2,而 PHPUnit PHAR 是 7.* 版本,它已与 Phive 一起安装。
“为什么不直接使用.phar 扩展名?”
我希望能够在没有 .phar 扩展名的情况下将 PHPUnit PHAR 用作二进制文件以使事情更整洁。
【问题讨论】: