0

次のようなファイルを含めると、フォルダー内のinclude("/testsitedir/include/subdir/inc.php"); 名前の付いたファイルで、一般的なエラーが発生します。 this.phptestsitedirfailed to open stream: No such file or directory in ...\testsitedir\this.php

ただし、単純なHTMLアンカータグを作成すると、次のようになります。 <a href="/testsitedir/include/subdir/inc.php">Test Link</a>(URLはインクルードのものと同じです)ブラウザーは自動的にURLを解決し、が/サイトのルートを示していることを認識します。

では、HTMLアンカータグと同じ方法でインクルードにURLを解決させるにはどうすればよいですか?

理解を深めるために、これが私がやろうとしていることです。contentサイトのルートディレクトリ内にあるという名前のサブディレクトリにヘッダーファイルがあります。同じURLを使用してすべてのファイルにヘッダーを含める方法を理解しようとしています。私のアプローチは、ヘッダーファイルへの絶対URLを使用することです。これが問題になっている理由は、単一のを使用してサイトのルートを簡単に変更できるようにしたいためですCONSTANT。また、サイトのルートディレクトリが常にサーバーのルートディレクトリになるとは限りません。したがって、サブディレクトリ内のサーバーにサイトを配置する場合はwww.example.com/view/site/siteroot/、定数SITE_ROOTを定義し、/view/site/siterootを使用してすべてのファイルをインクルードしますinclude(SITE_ROOT."/includes/file.php);が、インクルードは/サイトルート区切り文字としてのフォワードスラッシュ。実際のサイト名を使用するつもりでしたがurl_include、セキュリティ上の理由から有効にしたくありません。

4

1 に答える 1

1

DOCUMENT_ROOTPHPで定義された変数を使用します。

include($_SERVER['DOCUMENT_ROOT'] . "/testsitedir/include/subdir/inc.php");

ドキュメントから、変数には次のものが含まれています。

サーバーの構成ファイルで定義されている、現在のスクリプトが実行されているドキュメントルートディレクトリ。

于 2013-01-21T18:19:01.160 に答える