48

ルート フォルダーにアクセスするためのリンクの先頭にある / は、php インクルードでは機能しません。

たとえば、「/example/example.php」

解決策は何ですか?

4

9 に答える 9

65

ルート フォルダーとは、ファイル システムのルートではなく、Web ドキュメントのルートを意味すると想定しています。

そのために、次のいずれかを行うことができます

  • インクルード パスに Web ルート フォルダーを追加し、include('example/example.php')
  • またはあなたができるinclude($_SERVER['DOCUMENT_ROOT'].'/example/example.php')
于 2009-09-09T16:51:11.190 に答える
34

私もこの問題を抱えていました。ポール・ディクソンの答えは正しいですが、これは理由を理解するのに役立つかもしれません:

ここでの問題は、PHP がサーバー側の言語であることです。純粋な HTML ドキュメントは、サーバー上で設定したルート URL に基づいてファイルにアクセスできます (つまり/images/example.jpg、最上位のディレクトリから下に移動するために使用する任意のサブディレクトリから画像にアクセスする場合)、PHP は実際に使用時のサーバールートinclude (/images/example.jpg)

設定したサイト構造は、実際には Apache サーバーのファイル システム内にあります。私のサイトルートは、サーバールートから始まり、下に向かって、次のようになります。

/home2/siteuserftp/public_html/test/

「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」が文字通りそこにあることを確認してください)

編集:

DOCUMENT_ROOT およびその他の PHP SERVER 変数の詳細については、こちらを参照してください。

于 2010-09-03T05:24:26.163 に答える
5

include() (および require()、fopen() などの他の多くの関数) はすべて、Web ルートではなく、ローカル ファイルシステムで動作します。

だから、あなたがこのようなことをするとき

include( "/example/example.php" );

*nix マシンのルートからインクルードしようとしています。

あなたがやっていることへのアプローチ方法はたくさんありますが、Paul Dixon の提案はおそらく最善の策です。

于 2009-09-09T17:01:01.667 に答える
2

WindowsとIISを実行しているマシンでこれを解決しました:

<?php
  $docroot = 'http://www.example.com/';
  include ($docroot.'inc-header.php');
?>

ローカルの開発マシンを使用している場合は、C:\Windows\System32\drivers\etc\hosts に以下を追加することで、ドメインが localhost を指すように強制できます。

127.0.0.1   www.example.com

また、php.ini で allow_url_include を有効にする必要があります。

allow_url_include = On
于 2015-10-23T21:00:10.143 に答える
1

私にとっては、次のトリックが機能しました。Windows と IIS を使用しているため、DOCROOT は C:\Inetpub\wwwroot です。

  1. C:\Inetpub\wwwroot をドライブに subst します。W:(WEBコンテンツ)とする。
    subst W: C:\Inetpub\wwwroot
  1. php.ini を次のように編集します。W:\ を include_path に追加し、doc_root を W:\ に変更します。
include_path = ".;c:\php\active\includes;W:\"
doc_root = W:\

  1. スタートアップフォルダ内のCMDファイルにsubstコマンドを入れて、マッピングを自動で行います。

現在、両方のバージョンが許可されています。

    '/common/common.inc' を含めます。// マッピングされた W: root へのアクセス
    'common/common.inc' を含めます。// W: へのアクセス: include_path 内

于 2015-12-24T12:20:50.297 に答える