次のようなファイルを含めると、フォルダー内のinclude("/testsitedir/include/subdir/inc.php");
名前の付いたファイルで、一般的なエラーが発生します。 this.php
testsitedir
failed 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
、セキュリティ上の理由から有効にしたくありません。