从包含的文件中调用include

Hai*_*ood 27 php include-path

所以,检查这个目录结构

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

假设我在/directory/main_file.php中并且我include('../include_one.php');include_one.php中调用,以包含include_two.php.我需要打电话include('include_two.php);还是include('../include_two.php');

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

我知道最好的选择是拥有一个包含root_path的config.php,但是在这个阶段这是不可能的.


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

目录结构

/include.php
/start/start.php
/folder1/includeone.php
/folder1/folder2/includetwo.php

这是每个文件的内容

start.php

<?php 
  echo 'including ../include.php<br />';
  include('../include.php');
?>
Run Code Online (Sandbox Code Playgroud)

include.php

<?php 
  echo 'including folder1/includeone.php<br />';
  include('folder1/includeone.php');
?>
Run Code Online (Sandbox Code Playgroud)

includeone.php

<?php 
  echo 'including folder2/includetwo.php<br />';
  include('folder2/includetwo.php');
?>
Run Code Online (Sandbox Code Playgroud)

includetwo.php

<?php 
  echo 'done<br />';
?>
Run Code Online (Sandbox Code Playgroud)

而输出是

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

Pas*_*TIN 52

"相对包含路径"不会转移到包含的文件...这意味着使用相对路径通常会很糟糕.

我几乎一直使用的一个更好的解决方案是始终使用绝对路径 - 您可以使用相关和绝对路径来混合__DIR__,以获取包含写入文件的目录.


例如,include_one.php你在使用:

require_once __DIR__ . '/include_two.php';
Run Code Online (Sandbox Code Playgroud)

包含include_two.php与其位于同一目录中的文件include_one.php.


而且,main_file.php你会使用:

require_once __DIR__ . '/../include_one.php';
Run Code Online (Sandbox Code Playgroud)

包含include_one.php一个目录的文件.


这样,无论从哪个文件中调用它们,您的包含都将起作用.

  • 为了节省一些空间,`__DIR__`相当于`dirname(__ FILE __)`. (3认同)