我在本地服务器上成功安装了PHPCI,设置了一个项目,并运行了我的第一个版本。
即使没有phpci.yml,PHP CI似乎也能检测到我的Codeception测试(是的!)
但是,构建日志包含以下文本
异常:警告:file_get_contents(/tests/_output/report.tap.log):无法打开流:/ path / to / Sites / php-ci / phpci / PHPCI / Plugin / Codeception中没有此类文件或目录.php第94行 插件:失败
当我看一下第94行时,我看到以下内容
$tapString = file_get_contents(
$this->phpci->buildPath . $this->logPath . DIRECTORY_SEPARATOR . 'report.tap.log'
);
PHPCI似乎正在构建一个$this->phpci->buildPath
的路径。
这条路是什么?它是PHP CI路径吗?我的存储库的路径?第三个工作区可以在任何地方吗?
我在PHP CI中设置此路径? phpci.yml
中的每个项目?在管理员的某个地方?
答案 0 :(得分:1)
我在寻找有关PHPCI的答案时发现了您的问题。
我不知道你是否还需要你的答案,但我会把它发给其他想知道的人。
回答你的问题:
“我在PHP CI中设置此路径?”
好吧,回答我深入挖掘他们的源代码,我发现,原始路径是由以下PHP代码设置的:
$buildDirectory = $this->getId() . '_' . substr(md5(microtime(true)), 0, 5);
$this->currentBuildPath = PHPCI_BUILD_ROOT_DIR . $buildDirectory . DIRECTORY_SEPARATOR;
因此,生成的路径将是构建的ID和(或多或少)唯一部分。这里重要的是定义的常量PHPCI_BUILD_ROOT_DIR
,它在安装目录的文件vars.php
中定义:
// Define PHPCI_BUILD_ROOT_DIR
if (!defined('PHPCI_BUILD_ROOT_DIR')) {
define('PHPCI_BUILD_ROOT_DIR', PHPCI_DIR . 'PHPCI/build/');
}
因此默认情况下该目录是一个名为
的临时文件夹
path/to/phpci/PHPCI/build/4_31370/
当构建完成后,该文件夹当然会被删除。
然后我将文件夹的定义更改为
define('PHPCI_BUILD_ROOT_DIR', PHPCI_DIR . 'tempbuilddir/');
这给了我以下构建临时构建目录:
path/to/phpci/tempbuilddir/6_65873/
所以这个目录是完全可定制的。
然而,自您的版本以来,Codeception插件似乎已经发生了变化,因为文件名report.tap.log
似乎不再出现在源代码中。
我希望这个答案让您了解PHPCI构建目录配置。它确实帮助我找到了这个。