包括()和require_once()问题



>我有这种情况:

/
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);.php将无法正常工作。

(警告消息说目录中没有这样的文件(当然该文件存在),并且它写下了不是我期望的路径的子文件夹目录)。

我试图echo $SERVER['DOCUMENT_ROOT];查看整个路径,echo __DIR__;查看哪个是指向目录的正确路径,没有出路。

我知道这是一个愚蠢的问题,但如果有一颗善良的心可以帮助我,那就太好了。谢谢

处理此问题的最佳方法是使用绝对路径而不是相对路径。当你使用相对路径时,你每次都必须担心你有多少层深,然后有那么多../等等。这很混乱且难以管理,例如,如果您将文件移动到其他位置,则必须根据您现在的位置再次更新包含。这就是为什么绝对路径是有帮助的。

所以创建这样的东西:

$appRoot = "/path/to/root/folder/";

这是索引.php文件所在的路径。如果您愿意,它是"应用程序根"。

现在,在要包含init.php的任何文件中添加以下行:

include_once($appRoot."init/init.php");

理想情况下,应在位于根目录中的global config中创建$appRoot。如果您没有可以添加单一配置的结构,它仍然可能很混乱,您可能需要将绝对路径添加到单个文件中(这不是一个好主意)

相关内容

  • 没有找到相关文章

最新更新