PHP require_once错误与相对路径

时间:2013-10-02 09:17:22

标签: php path phpunit relative require-once

我想在phpunit中测试我的php应用程序。我的问题是require_once找不到我要测试的文件。我收到这个错误:

  

警告:   require_once(C:\ MyProject的\ PHPUnit的-tesztek \包括/../包括/ form.php的):   无法打开流:没有这样的文件或目录   第4行的C:\ MyProject \ phpunit-tesztek \ include \ FormTest.php

所以它搜索include /../ include / form.php中的form.php文件有什么不对。

我使用了这段代码:

  

require_once'PHPUnit / Autoload.php';

     

require_once(__ DIR __ '/ .. /包括/ form.php的');

测试文件位于C:\ MyProject \ phpunit-tesztek \ include \ FormTest.php

我要测试的文件是:C:\ MyProject \ include \ form.php

有什么问题?

3 个答案:

答案 0 :(得分:4)

问题是相对路径。 __DIR__使用文件所在的目录而不使用尾随分隔符。然后,您使用相对路径(/../)更改路径以上升到一个目录。

参见手册条目 - > PHP Manual for __DIR__

__DIR__ will return C:\MyProject\phpunit-tesztek\include

您希望使用C:\MyProject\include\路径

__DIR__ . '/../../include/Form.php';

我通常自己使用dirname(__FILE__),因为它获取源代码文件的当前目录(这是绝对的),允许我的相对路径从该位置移动。

答案 1 :(得分:0)

尝试删除../

require_once(DIR.'include/form.php');

答案 2 :(得分:0)

使用魔法常量 DIR

require_once(__DIR__ . '/../include/form.php');