calling include from an included file

后端 未结 3 427
攒了一身酷
攒了一身酷 2020-12-14 16:45

So, examining this directory structure

  • /include_one.php
  • /include_two.php
  • /directory/main_file.php

A

相关标签:
3条回答
  • 2020-12-14 17:02

    The "relative include path" is not shifted to the included file... Which means that using relative paths generally ends badly.

    A better solution, that I use almost all the time, is to always work with absolute paths -- and you can mix relatives and absolute paths using __DIR__, to get the directory that contains the file where this is written.


    For example, in include_one.php, you'd use :

    require_once __DIR__ . '/include_two.php';
    

    To include the include_two.php file that's in the same directory as include_one.php.


    And, in main_file.php, you'd use :

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

    To include the include_one.php file that's one directory up.


    With that, your includes will work, no matter from which file they are called.

    0 讨论(0)
  • 2020-12-14 17:12

    I am using this code:

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

    And I include a file:

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

    With if(!isset($TO_HOME_DIR)), it's not important how much you include a file into included file into included file into includ..... Only first file's -and main file's- $TO_HOME_DIR declaration is used.

    Second advantage of this approach is, if you change directory of file, you only need to change one line of code; $TO_HOME_DIR declaration. :)

    0 讨论(0)
  • 2020-12-14 17:12

    The include path is relative to the first file in the include chain.

    A good way to ensure the correct include path is to always include from the document root.

    This is done like this:

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

    0 讨论(0)
提交回复
热议问题