如何在PHPUnit中使用绝对路径?

时间:2014-03-19 12:08:50

标签: php phpunit

如何在PHPunit中使用./?我尝试了几种这样的方法:

mkdir('./foo)

它总是失败但它通过浏览器工作

但如果我使用:

mkdir('../../../foo')

通过PHPUnit工作但是通过浏览器出错。

但如果我使用:

mkdir(dirname(__FILE__).'../../../foo');

根本不工作

2 个答案:

答案 0 :(得分:1)

dirname( FILE )会为您提供文件所在位置的绝对路径。这可能与命令行和浏览器不同。让我们假设一个基本安装,其中网页位于文件系统上的/ apps / website(或Windows上的C:\ apps \ website)。

您的网络服务器像网站一样提供默认设置(简单配置),所以

http://localhost/

是网址。所以现在Web服务器和命令行都有不同的源代码文件路径。

如果index.php在网站目录中,则dirname( FILE )会给您不同的结果:

浏览器:/index.php,
命令行:/apps/website/index.php

考虑到这一点,.. / foo.php也将根据您运行它的位置在不同的相对目录中。

浏览器:无效,因为你无法超越/ 命令行:/apps/foo.php(/ apps / website /../ foo.php)

编写测试时,您需要知道结构中的位置以及相对路径与位置的位置,然后相应路径相应地更改。假设你有一个lib子目录到网站(/ apps / website / lib)并且PHPUnit测试在那个目录中,并且你想要来自父目录的foo.php,那么你可以使用

dirname(__FILE__) . '/../foo.php');   //Assuming __FILE__ is /apps/website/lib/file.php

dirname()通常没有尾部斜杠,因此在组合剩余的相对路径时需要添加它。

答案 1 :(得分:0)

试试这个,

MKDIR(目录名(文件)' /../../../ FOO&#39);