/ルートフォルダーへのリンクの先頭にあるphp includeでは機能しません。
たとえば、「/ example/example.php」
解決策は何ですか?
ルートフォルダとは、ファイルシステムのルートではなく、Webドキュメントのルートを意味すると想定しています。
そのために、次のいずれかを行うことができます
include('example/example.php')
に追加しますinclude($_SERVER['DOCUMENT_ROOT'].'/example/example.php')
することができます私もこの問題を抱えていました。ポール・ディクソンの答えは正しいですが、おそらくこれはあなたが理由を理解するのに役立つでしょう:
ここでの問題は、PHPがサーバー側の言語であることです。サーバーで設定したルートURLに基づいて純粋なHTMLドキュメントがファイルにアクセスできる場所(つまり、現在のサブディレクトリから画像にアクセスするには、_/images/example.jpg
_を使用してトップディレクトリから下に移動します) 、PHPは、include (/images/example.jpg)
を使用すると、実際にサーバールートにアクセスします
実際に設定したサイト構造は、Apacheサーバーのファイルシステム内にあります。私のサイトのルートは次のようになります。サーバーのルートから始まり、下に向かっていきます。
_/home2/siteuserftp/public_html/test/
_
「テスト」はサイトのルートを表します
PHPインクルードが希望する結果を得られない(それが本来どおりに機能している)理由を質問に答えるのは、PHPコードを試して、ファイルが実際にサイトのHTMLルートにある場合、サーバールートでファイルを見つけます。これは上記のようになります。
ファイルは「test /」のサイトルートに基づいており、次のようになります。
/home2/siteuserftp/public_html/test/about/index.php
ポール・ディクソンが提供した答え:
_include($_SERVER['DOCUMENT_ROOT'].'/example/example.php')
_
まさにあなたの問題を解決するものです( 'DOCUMENT_ROOT'を置き換えるドキュメントルートを見つけることを心配する必要はありません。PHPはあなたのためにそれを行います。
編集:
詳細情報DOCUMENT_ROOTおよびその他のPHP SERVER変数 ここにあります
include()(およびrequire()、fopen()などの他の多くの関数)はすべて、Webルートではなくローカルファイルシステムで機能します。
だから、あなたがこのようなことをするとき
include( "/example/example.php" );
* nixマシンのルートからインクルードしようとしています。
そして、あなたがやっていることにアプローチする方法は多数ありますが、Paul Dixonの提案はおそらくあなたの最善策です。
すべてのWebサーバーにはpublic_html
フォルダ。通常はファイルなどを保存します。/
、あなたはpublic_html
、代わりにメイン(アクセス不能)ルートに向けます。そのため、$_SERVER['DOCUMENT_ROOT']."/your/locati.on"
代わりに
私はWindowsを実行しているマシンでこれを解決し、IISで次のようにしました:
<?php
$docroot = 'http://www.example.com/';
include ($docroot.'inc-header.php');
?>
ローカルの開発マシンを使用している場合、C:\ Windows\System32\drivers\etc\hostsに以下を追加することにより、ドメインがローカルホストを指すように強制できます。
127.0.0.1 www.example.com
また、php.iniでallow_url_includeを有効にする必要があります。
allow_url_include = On
私にとって、次のトリックはうまくいきました。 IISでWindowsを使用しているため、DOCROOTはC:\ Inetpub\wwwrootです。
subst W:C:\ Inetpub\wwwroot
include_path = "。; c:\ php\active\includes; W:\" doc_root = W:\
現在、両方のバージョンが許可されています:
include '/common/common.inc'; //マップされたWへのアクセス:root include 'common/common.inc'; // Wへのアクセス:include_path 内
PHPのバージョンによっては、ドキュメントルートの最後に区切り文字が含まれる場合もありますが、そうでない場合もあります。
$r = trim(filter_input(INPUT_SERVER, 'DOCUMENT_ROOT', FILTER_SANITIZE_STRING));
if (substr($r, 0, 1) == '/')
{
define("PATCH_SEPARATOR", "/");
}
else
{
define("PATCH_SEPARATOR", "\\");
}
if (substr($r, -1) == PATCH_SEPARATOR)
{
include_once ($r . 'example/example.php');
}
else
{
include_once ($r . PATCH_SEPARATOR . 'example/example.php');
}