代码之家  ›  专栏  ›  技术社区  ›  Hailwood

从包含的文件调用include

  •  25
  • Hailwood  · 技术社区  · 14 年前

    所以, 正在检查此目录结构

    • /包括\u one.php
    • /目录/main\u file.php

    假设我在 我打电话给你 include('../include_one.php'); 包括\u one.php ,包括 包含\u two.php include('include_two.php); include('../include_two.php'); ?

    所以我的问题是:当包含一个文件时,“相对包含路径”是转移到包含的文件,还是保留在主包含文件中?

    我知道最好的选择是使用一个包含根路径的config.php,但是这在现阶段是不可能的。


    更新:
    所以,我不确定谁是对的,因为这是我的测试

    /包含.php
    /开始/start.php

    /folder1/folder2/includetwo.php

    这是每个文件的内容

    <?php 
      echo 'including ../include.php<br />';
      include('../include.php');
    ?>
    

    包含.php

    <?php 
      echo 'including folder1/includeone.php<br />';
      include('folder1/includeone.php');
    ?>
    

    includeone.php文件

    <?php 
      echo 'including folder2/includetwo.php<br />';
      include('folder2/includetwo.php');
    ?>
    

    includetwo.php文件

    <?php 
      echo 'done<br />';
    ?>
    

    输出为


    包括folder1/includeone.php
    包括folder2/includetwo.php
    完成

    2 回复  |  直到 14 年前
        1
  •  58
  •   Donnie Ashok    8 年前

    我几乎一直在使用的一个更好的解决方案是始终使用绝对路径,并且可以使用 __DIR__ ,以获取包含写入此文件的文件的目录。


    include_one.php ,您将使用:

    require_once __DIR__ . '/include_two.php';
    

    include_two.php 与相同目录中的文件 包括\u one.php


    而且,在 main_file.php ,您将使用:

    require_once __DIR__ . '/../include_one.php';
    

    包括\u one.php 一个目录上的文件。


    这样,无论从哪个文件调用include,include都可以工作。

        2
  •  1
  •   Kuvalya    7 年前

    我正在使用此代码:

    if(!isset($TO_HOME_DIR)) $TO_HOME_DIR="../"; 
    

    include_once($TO_HOME_DIR."common/include_one.php");
    

    if(!isset($TO_HOME_DIR)) ,在included中包含多少文件并不重要。。。。。只使用第一个文件和主文件的$TO\u HOME\u DIR声明。

    这种方法的第二个优点是,如果更改文件的目录,只需更改一行代码$收件人地址:

        3
  •  1
  •   ut9081    5 年前

    包含路径相对于包含链中的第一个文件。

    确保正确包含路径的一个好方法是始终从文档根目录包含。

    这是这样做的:

    include $_SERVER['DOCUMENT_ROOT'] . '/folder1/folder2/includetwo.php';

    推荐文章