require_once 在文件相对于根目录时不起作用,但在相对于当前位置时起作用
Posted
技术标签:
【中文标题】require_once 在文件相对于根目录时不起作用,但在相对于当前位置时起作用【英文标题】:require_once doesn't work when the file is relative to the root, but works when relative to the current location 【发布时间】:2018-09-28 13:54:32 【问题描述】:这有效:require_once '../../include/common.php'
但这不是:require_once '/include/common.php'
但这有效:<a href = '/include/common.php'>
我收到此错误: 警告:require_once(/include/common.php):打开流失败:C://C:\wamp64\www\src\views\search.php 中没有这样的文件或目录
如果它作为链接起作用,为什么它不适用于 require_once?
感谢您的帮助:)
【问题讨论】:
有errors
.
看到这个答案:***.com/questions/5371828/…
是的,对不起,我忘了包括!警告:require_once(/include/common.php):打开流失败:没有这样的文件或目录
【参考方案1】:
在 require_once 中使用相对路径通常被认为是不好的做法,会导致容易出错的情况。
更好的解决方案是在你的 php.ini 文件中正确设置 include_path。
或者你可以使用这样的东西:
require_once dirname(__FILE__) . "/../../yourscript.php";
希望对你有帮助。
【讨论】:
您也可以使用require_once(__DIR__."/../../yourscript.php");
获取更新版本的 PHP。【参考方案2】:
如果您对 require_once 有问题,请始终使用绝对路径(文件系统),如下所示:
require_once '/folder1/folder2/folder3/file.php'
在您的情况下,require_once '/include/common.php'
不是“相对于根”。这是一个不存在的绝对文件系统路径。
尝试在文件夹中使用print_r(__DIR__);
是否要包含文件并查看文件系统的绝对路径。
以下<a href = '/include/common.php'>
有效,因为它与域名相关。
Reading this 可能会帮助您了解文件系统路径和网络服务器路径之间的区别。
【讨论】:
【参考方案3】:require_once '/include/common.php'
和
<a href = '/include/common.php'>
他们没有指向同一个文件。
在第一种情况下,您将在系统文件根目录的/include
中包含common.php
。
在第二种情况下,您将在 VHost 根目录的 /include
中包含 common.php
。
这就是../../include/common.php
与/include/common.php
不同的原因
【讨论】:
以上是关于require_once 在文件相对于根目录时不起作用,但在相对于当前位置时起作用的主要内容,如果未能解决你的问题,请参考以下文章