繁体   English   中英

include()和require_once()问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM