4

我在嵌套包含时遇到问题。虽然我看到有一些类似的问题,但它们似乎没有帮助。

一般来说,我对包含没有问题,但最近我一直在尝试一些新的东西,但我无法让嵌套包含工作。

一种解决方案:php 嵌套包含行为

基本设置:

  • index.php 包括 '/include/header.php'
  • header.php 包括 '/resources/login/index_alt.php'
  • index_alt.php 包括 '/resources/login/index_auth.php'
  • index_auth.php 包括 '/class/Login.class.php' 和 '/class/Connection.class/php'

我实际上并没有写这样的路径(它是为了理解深度)。这就是它在页面上的外观。

索引.php

  • include('include/header.php');

header.php : (除了 /resources/...,每个深度级别都包含标题)

  • 包括('../resources/login/index_alt.php');

index_alt.php

  • 包括('index_auth.php');

index_auth.php

  • 包括('../../class/Login.class.php');
  • 包括('../../class/Connection.class.php');

在某些深度级别,头文件被接受,但包含嵌套不会......

4

2 回答 2

4

假设文件系统看起来像这样..

/www
   include/header.php
   class/Login.class.php
   class/Connection.class.php
   resources/login/index_alt.php
   resources/login/index_auth.php
   index.php

这意味着

index.php: include(__DIR__ . '/include/header.php');
header.php: include(__DIR__ . '/../resources/login/index_alt.php');
index_alt.php:  include(__DIR__ . '/index_auth.php');

ETC; 见http://php.net/manual/en/language.constants.predefined.php

于 2012-07-12T18:40:02.383 回答
2

不要使用 ../ 遍历目录树,而是使用 dirname( __FILE__)。此外,您可能希望 include_once() 或 require_once() 避免其他潜在问题:

索引.php:

include('include/header.php');

header.php:

include(dirname(dirname(__FILE__)) . '/resources/login/index_alt.php');

(注意 dirname( __FILE__) 将返回当前目录,但 dirname(dirname( __FILE__)) 将返回父目录)

于 2012-07-12T18:39:32.060 回答