我使用netbeans 7.2.1和最新的phpunit。当我想通过右键单击php类在netbeans中生成单元测试时,然后工具 - >创建phpUnit测试Skeleton生成器抛出错误:没有这样的文件或目录。
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根目录,但它显示为灰色,无法将其设置为比应用程序高一级的文件夹。
我该如何解决这个问题?
编辑:
进一步澄清:
我最初有一个sharedResources的相对文件路径,它也不起作用。我改变了这个和coruse ti是有意义的,因为DOCUMENT_ROOT是由apache设置的,因此在netbeans中运行时没有设置。所以临时解决方法是添加
$docRoot = getenv("DOCUMENT_ROOT");
if(empty($docRoot)){
putenv("DOCUMENT_ROOT=C:/xampp/htdocs");
}
每个班级的负责人。当然,这不是一个非常实用或好的解决方案。我需要告诉netbeans设置此环境变量或使用正确的相对路径。
答案 0 :(得分:0)
这是我的解决方案。它不理想,但简单而有效。问题是,当Apache没有调用脚本而是netbeans调用脚本时,DOCUMENT_ROOT显然是空的。因此必须以某种方式设定。为此,我编辑了php文件phpunit-skelgen
(它没有文件结尾,但它是一个php文件)。
在我添加的第一个php行的许可证文本下面
putenv("DOCUMENT_ROOT=C:/xampp/htdocs");
这就是诀窍。