4

ネストされたインクルードに問題があります。同様の問題がいくつかあるのを見てきましたが、それらは役に立たないようです。

通常、インクルードに問題はありませんが、最近、何か新しいことを試みていて、ネストされたインクルードを機能させることができません。

1 つの解決策: 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'

私は実際にはこのようにパスを書きません(深さを理解するためです)。これは、ページ上でどのように表示されるかです。

index.php :

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

header.php : (ヘッダーは /resources/... を除くすべての深さレベルに含まれます)

  • include('../resources/login/index_alt.php');

index_alt.php :

  • include('index_auth.php');

index_auth.php :

  • include('../../class/Login.class.php');
  • include('../../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');

等; http://php.net/manual/en/language.constants.predefined.phpを参照してください

于 2012-07-12T18:40:02.383 に答える
2

../ でディレクトリ ツリーをたどる代わりに、dirname( __FILE__) を使用します。また、他の潜在的な問題を回避するために、おそらく include_once() または require_once() が必要です。

index.php:

include('include/header.php');

header.php:

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

__FILE__(dirname( ) は現在のディレクトリを返しますが、dirname(dirname( __FILE__)) は親を返すことに注意してください)

于 2012-07-12T18:39:32.060 に答える