1

あなたの時間と注意のためにthx。

私は、mySql データベースなしで動作するネット上で見つけたゲストブックを統合したい php サイトで作業しています。

私のサイトは次のように構成されています。

host.../myDir/fileA.php (here we have all the basic files of the site)

統合するゲストブックの最初のファイルは次の場所にあります。

host.../myDir/gbook/gbook.php 

gbook dir の下には、グラフィックに必要なすべてのものを含む template という名前の別のディレクトリがあります (明らかなように)。

fileA.php 内に、この include コマンドを挿入しました。

require_once "gbook/gbook.php";

そして、gbook/gbook.php の中には、次のコマンドがあります。

$settings['tpl_path'] = './templates/'.$settings['template'].'/';

これで、 (include(dirname( FILE ). '...') の php ガイドを読み、このコマンドに関する複数の説明も読んだので、これをテストしました。

 $settingsBase['tpl_basepath'] = (dirname(__FILE__) . '/');
 $settings['tpl_path'] =  $settingsBase['tpl_basepath'].'templates/'.$settings['template'].'/';

ただし、統合には機能しますが、グラフィックには機能しません。だから、これは私が理解していないことと私が理解したことです。

別のファイル内にファイルを「含める」と、コンパイラはコードを同じファイルの一部として読み取ります。それが問題です。別の /dir にあるものをインクルードすると、コンパイラはファイルを取得しますが、構造全体を取得するわけではないため、インクルード ファイル内に別の「インクルード」がある場合、コンパイラはインクルード ファイルがある /dir 内でそれを探します。正しい?

dirname() コマンドは存在しますか? dirname() を使用して、このファイル /dir/file.php をインクルードしたいことをコンパイラに伝えるのは正しいですか?

したがって、この構造がある場合:

host.../myDir/fileA.php

このファイルには次のコマンドが含まれています。

include gbook/fileB.php

このファイルには次のコマンドが含まれています。

include /template/all_the_other_files.php

完全な構造は次のとおりです。

(1) host...  
   (2) /myDir (where_there's_site)
      (3) /gbook (where_there's_base_gbook_structure)
         (4) /template (where_there's_template)
            (5) /others dir (where_there's_pics_smiles_etc...)

コンパイラに「gbook/gbook.php をインクルードするときに」と伝えるにはどうすればよいですか?

おそらくあなたにとっては本当に簡単なことだと思いますが、私は問題を克服しようとしていますが、基本的な解決策と問題の説明を理解できません。

どうも。

4

1 に答える 1

0

まず、includeの代わりにrequire_onceを使用することをお勧めします。必要なファイルが見つからない場合はエラーが発生し、複数のインクルードを気にする必要はありません。

gbook/fileB.php でこれを使用するだけでよいと思います。

require_once __DIR__ . /template/all_the_other_files.php;

ご覧のとおり、新しい PHP バージョンでは、dirname(FILE) の代わりに DIR マジック定数を使用できます。これを使用すると、相対パスへのインクルードを非常に簡単に実現できます。それが役立つことを願っています。

于 2015-07-31T11:27:33.920 に答える