1

我使用 netbeans 7.2.1 和最新的 phpunit。当我想通过右键单击 php 类在 netbeans 中生成单元测试时,工具-> 创建 phpUnit 测试骨架生成器会抛出错误:没有这样的文件或目录。

require_once(/sharedResources/connection.inc.php): failed to open stream: No such file or directory

问题是 require_once 中显示的路径是错误的。它是这样生成的:

$sharedResources = getenv("DOCUMENT_ROOT") . "/sharedResources";

并且应该解析为绝对文件路径。当应用程序在 apache 中运行时,这可以正常工作。但是,从 netbeans 运行时似乎 getenv("DOCUMENT_ROOT") 是错误的。我的问题是如何正确设置它?我的申请在

getenv("DOCUMENT_ROOT") . "/MyApp";

我正在为其创建测试的文件在

"MyApp/services"

在项目属性下有一个选项 web root,但它是灰色的,并且无法将其设置为比您的应用程序高一级的文件夹。

我该如何解决这个问题?

编辑:

进一步澄清:

我最初有一个 sharedResources 的相对文件路径,它也不起作用。我改成这个并且 coruse ti 是有道理的,因为 DOCUMENT_ROOT 是由 apache 设置的,因此在 netbeans 中运行时没有设置。所以临时修复是添加

$docRoot = getenv("DOCUMENT_ROOT");
if(empty($docRoot)){
    putenv("DOCUMENT_ROOT=C:/xampp/htdocs");
}

到每个班级的负责人。当然,这不是一个非常实用或好的解决方案。我需要告诉 netbeans 设置这个环境变量或使用正确的相对路径。

4

1 回答 1

0

那么这是我的解决方案。这并不理想,但简单且有效。问题是当脚本不是由 Apache 而是由 netbeans 调用时,DOCUMENT_ROOT 显然是空的。因此它必须以某种方式设置。为此,我编辑了 php 文件phpunit-skelgen(它没有文件结尾,但它是一个 php 文件)。

在许可证文本下方作为我添加的第一行 php

putenv("DOCUMENT_ROOT=C:/xampp/htdocs");

那成功了。

于 2012-12-03T06:38:27.477 回答