从包含的文件调用包含

2022-08-30 14:33:57

因此,检查此目录结构

  • /include_one.php
  • /include_two.php
  • /目录/main_file.php

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

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

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


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

目录结构

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

这是每个文件的内容

开始.php

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

包括.php

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

包括一个.php

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

包括两个.php

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

并且输出为

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


答案 1

“相对包含路径”不会移动到包含的文件...这意味着使用相对路径通常会有不好的结局。

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


例如,在 中,您将使用:include_one.php

require_once __DIR__ . '/include_two.php';

包括与 位于 同一目录中的文件。include_two.phpinclude_one.php


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

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

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


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


答案 2

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

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

这是这样完成的:

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


推荐