[英]include() and require_once() Issue
我有这种情况:
/
index.php
/init (folder)
init.php (of course inside this file i use require_once for db/function/and whatever you want to put inside)
/layout_parts (folder)
header.php (and others common parts are inside this folder)
/my_space (folder inside layout parts)
my_file.php
another_file.php
/your_space (folder inside layout parts)
your_file.php
another_file.php
/third_space (folder inside layout parts)
third_file.php
another_file.php
对于索引我没有问题,一切都很好,但是如果我在其中一个子文件夹文件中include header.php
,则require_once(init/init.php);
那在header.php的顶部是行不通的。
(警告消息说该目录中没有这样的文件(存在该文件),并且它记录了子文件夹目录,该目录不是我期望的路径)。
我试过echo $SERVER['DOCUMENT_ROOT];
要查看整个路径,请echo __DIR__;
看到wich是目录的正确路径,没有出路。
我知道这是一个愚蠢的问题,但是如果有一颗善良的心可以帮助我,那将是很好的。 谢谢 :)
解决此问题的最佳方法是使用绝对路径而不是相对路径。 当您使用相对路径时,您每次都必须担心您有多少个层次,然后又有那么多个../
等。这很杂乱且难以管理,例如,如果将文件移至其他位置,您必须根据现在的位置再次更新包含文件。 这就是绝对路径有用的原因。
因此,创建如下内容:
$appRoot = "/path/to/root/folder/";
这是index.php文件所在的路径。 如果需要的话,它是“应用程序根目录”。
现在,在要包含init.php
任何文件中,添加以下行:
include_once($appRoot."init/init.php");
理想情况下,应在位于root的global config
创建$appRoot
。 如果您没有可以添加统一配置的结构,那么它仍然会很混乱,您可能需要在单个文件中添加绝对路径(这不是一个好主意)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.