PHP require_once 错误与相对路径
Posted
技术标签:
【中文标题】PHP require_once 错误与相对路径【英文标题】:PHP require_once error with relative path 【发布时间】: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。
请分享您目前无法选择答案的原因。有什么不清楚如何解决这个问题吗?请告诉我们。
【参考方案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');
【讨论】:
以上是关于PHP require_once 错误与相对路径的主要内容,如果未能解决你的问题,请参考以下文章
php require_once 没有按我想要的方式工作.. 相对路径问题
PHP require_once 在 Mac OSX Lion 中本地抛出错误
php页面中的包含文件用相对路径(require_once("./smarty/smarty.class.php"))出错了怎么解决