包含相对路径工作异常

卢卡斯

我有以下文件夹和文件结构:

  • public_html(文件夹)
    • index.php(文件)
  • 资源(文件夹)
    • 配置(文件夹)
      • main_config.php(文件)
    • render_template.php(文件)-(此文件与configs文件夹处于同一级别,位于resources文件夹内)

在index.php中,我称:

require_once("../resources/render_template.php");

在render_template.php中,我调用:

require_once("configs/main_config.php");

或:(均工作)

require_once("../resources/configs/main_config.php");

我的问题:

  1. 为什么要require_once("configs/main_config.php")工作?现在该路径是否应该相对于index.php,因为render.template.php文件包含在index.php中,这意味着需要添加../resources/才能离开public_html文件夹?

  2. 如果第一种方法是正确的,那为什么require_once("../resources/configs/main_config.php");行得通呢?

El_Vanja

它的工作方式很奇怪。它遵循一种逻辑模式。

  1. 为什么要require_once("configs/main_config.php")工作?

之所以起作用,是因为它不会根据“父”文件的包含位置来评估相对路径。main_config.php包含在中render_template.php它不需要知道render_template.php可能包含在哪里

如果实际上取决于包含父文件的位置,那么您将需要为来自不同文件夹的文件定义不同的相对路径,这显然行不通。它必须是通用的,因此可以在需要的地方包括该脚本。

首先要包括“最低”级别的文件。index.php包括render_template.php其中包括main_config.php这意味着在将render_template.php内容添加到之前index.phpmain_config.php将内容添加到render_template.php因此,他们最终会一起被添加到index.php在那里的地方require_once("../resources/render_template.php")被调用。

  1. 如果第一种方法是正确的,那为什么require_once("../resources/configs/main_config.php");行得通呢?

没有理由不起作用。如果您采用我们在第一个答案中所述的内容(它独立于“父母”所在的位置),则遵循的确切路径是:

  • 我们目前位于resources文件夹中render_template.php
  • 我们将(..上方的一层移至“根”文件夹(包含public_indexresources文件夹)。
  • 我们移回该resources文件夹。其余的很简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章