5

Webroot 内にあるファイルをインクルードしたい Webroot の外に php ファイルがあります。

webroot外のフォルダ→ webroot
をインクルードしたいphpファイル →インクルードするファイル

したがって、1つ上のディレクトリに移動する必要がありますが、これは機能しません:

include('../webroot/file-to-include.php');

フルパスを含めることも機能しません:

include('home/xx/xx/domains/mydomain/webroot/file-to-include.php');

どうすればこれを達成できますか?

4

6 に答える 6

13

フルパスは次のとおりです。

include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');

または、次のようにパスを設定する必要があります。

include(__DIR__ . '/../webroot/file-to-include.php');  // php version >= 5.3
include(dirname(__FILE__) . '/../webroot/file-to-include.php');  // php version < 5.3
于 2012-11-25T11:12:35.160 に答える
1

これを共通ファイルに入れ、webroot 以外のすべての php ソースで共有します。

<?php

  define('PATH_TO_WEBROOT', '/home/xx/xx/domains/mydomain/webroot');

次に、以下を使用してファイルをインクルードします。

<?php
  include (PATH_TO_WEBROOT.'/file-to-include.php');

ウェブルートの場所が変更された場合、コード ベースで 1 回だけ変更する必要があります。

ディレクティブを設定することで、特定のファイルをすべてのスクリプトに自動的に追加するように php を構成できます。auto_prepend_fileそのファイルには、たとえば、PATH_TO_WEBROOT定数またはrequire_onceそれを含むファイルが含まれている可能性があります。この設定は、ドメインごとまたはホストごとに行うことができます ( ini セクションのドキュメントを参照してください)。

また、クラスを広範囲に使用している場合は、オートロード機能の使用を検討してください。

于 2012-11-25T11:41:56.040 に答える
0

フルパスの末尾にスラッシュを追加してみてください。

include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php');

それ以外の場合は、相対パスとして解釈されます。

ディレクトリを webroot に変更して、これが機能するかどうかを確認することもできます-デバッグの目的で:

chdir("/home/xx/xx/domains/mydomain/webroot");
include "your_file.php";
于 2012-11-25T11:15:25.333 に答える
0

現在 (2021 年) に話を早送りすると、別の方法として、PHPinclude_pathディレクティブを php.ini (または user.ini) に追加して、includes フォルダーがどこにあっても (パブリック ルートの内側または外側) を指すようにすることができます。この方法は、PHP コードにまったく手を加えることなく、プロジェクト内の 1 行のコードを変更するという容易さを兼ね備えています。CentOS を使用しているため、これが Windows ボックスで機能するかどうかはわかりません。

例: include_path = ".:/home/{acct-name}/{include-path}" (これは public_html から 1 レベル上か、パブリック フォルダーの名前が何であれ)

include 'file-to-include.php';この混合アプローチにより、サイト全体のコードを 1 行だけ変更するだけでインクルード ファイルを変更できるという柔軟性を維持しながら、ルートを定義する手間をかけずに、PHP コードで簡単に呼び出すことができます。

ちなみに、複数の場所を含めることができます。その場合、2 つの場所を のようにコロンで区切ることができますinclude_path = ".:/home/{acct-name}/{include-path-1}:/home/{acct-name}/{include-path-2}"

于 2021-09-10T17:52:31.770 に答える
-6

これはうまくいくはずです

$_SERVER['DOCUMENT_ROOT']/home/xx/xx/domains/mydomain/webroot/file-to-include.php

そして、そのレベルにアクセスできることを確認してください。

于 2012-11-25T11:13:26.647 に答える