【问题标题】:PHP require_once error with relative pathPHP require_once 错误与相对路径
【发布时间】:2013-10-08 15:27:08
【问题描述】:

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

Warning:
require_once(C:\MyProject\phpunit-tesztek\include/../include/form.php):
failed to open stream: No such file or directory in
C:\MyProject\phpunit-tesztek\include\FormTest.php on line 4

所以它在 include/../include/form.php 中搜索 form.php 文件有什么问题。

我使用了这个代码:

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

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

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

有什么问题?

【问题讨论】:

  • 问题是你想要的路径(“C:\MyProject\include\form.php")与你指定的路径不匹配:“C:\MyProject\phpunit-tesztek\include/../include/form.php”。从错误信息中应该很清楚了,你看是吗?请参阅answer by Steven Scott
  • 请分享您目前无法选择答案的原因。有什么不清楚如何解决这个问题吗?请告诉我们。

标签: php path phpunit relative-path require-once


【解决方案1】:

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

见手册条目->PHP Manual for __DIR__

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

您正在寻找使用C:\MyProject\include\ 路径

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

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

【讨论】:

  • dirname(__FILE__) 是准确编写 __DIR__ 的过时方式,它是在 PHP 5.3 中引入的,之前不可用。顺便说一句。被引入备用dirname() 电话。仅供参考:)
  • @hakre 感谢您提供的信息。我参考了旧的,因为 5.2 仍在某些领域中使用,对于某些团队来说,您正在获得所传递内容的目录更清楚一些。虽然 DIR 是脚本的目录,但您也可以在另一个变量上使用 dirname() 来检索其路径。\
【解决方案2】:

使用魔法常数DIR

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

【讨论】:

  • 抱歉,好像是 SO 文本解析器问题
【解决方案3】:

尝试删除../

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

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 2010-12-29
    • 2013-02-19
    • 2013-05-29
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2011-07-19
    相关资源
    最近更新 更多