2

アップデート:

ここにあるindex.phpファイル:

/public_html/d/index.php

含まれるもの:

/public_html/d/core/source/class.File1.php

このClass.File1.phpには、次のように記述されたインクルードがあります。

include 'class.File2.php';

当然class.File2.php、上記のようにclass.File1.phpと同じディレクトリに配置します。

/public_html/d/core/source/class.File2.php

でも、

実際にはこのファイルが含まれています:(欠落していることに注意してください/d/

/public_html/core/source/class.File2.php

現在のディレクトリにあるファイルを使用しない理由がわかりません。

しかし、ここにいくつかの可能性があります。

ページをリクエストしているユーザーからのエントリは次のようになります:(ユーザータイプwww.host.com/d

/public_html/d/

これには次のものが含まれます:(これは正常に動作します、私はそれをテストしました)

/public_html/d/core/source/class.File1.php 

ただし、そのファイルのインクルードは、上記のように問題が発生する場所です。

include "class.File2.php"

理にかなっている唯一のことは...含まれているのは次のようなある種の内部定数を使用していることです

ROOT

また

$_SERVER['DOCUMENT_ROOT']

しかし、なぜそれが無視されるのか理解できませんが/d/、残りは理解できます。

4

3 に答える 3

2

相対パスで含めてみましたか?

include './class.File2.php';

class.File1.php 自体は他のスクリプトに含まれていますか?

于 2012-05-24T14:06:24.577 に答える
2

アプリのどこかでset_include_pathを使用していますか? おそらくそれがあなたの問題の原因かもしれません。そうすることで、require、include、fopen()、file()、readfile()、および file_get_contents() 関数が最初にファイルを探すディレクトリのリストを指定します。

別の方法として、問題を回避するために絶対パスを定義することをお勧めします。これをあなたの/public_html/d/core/source/class.File1.php

// This if you are using PHP >= 5.3
include(__DIR__ . '/class.File2.php');

// Or this if you dont have the magic constant __DIR__ available
include(dirname(__FILE__) . '/class.File2.php');

__FILE____DIR__は魔法の定数です。__FILE__その特定のファイルへの絶対パスを持つ定数です。And__DIR__は、そのファイルがあるディレクトリへの絶対パスです。echo __FILE__;またはを実行してそれらをテストすることもできますecho __DIR__;

詳細については、 http://php.net/manual/en/language.constants.predefined.phpをご覧ください。

于 2012-05-24T14:11:14.473 に答える
0
  • getcwd()(私のシステム上で)どのファイルにあるかに関係なく、常に同じパスを返します。私の意見ではバグ。

  • (私のシステムでは)PHPは、インクルードリストまたは現在のディレクトリで指定されていないパスで別のファイルを見つけました。これは私の意見ではバグです。

  • 私のシステムでは、絶対パスを使用したくない場合...相対パスを使用するために私が見つけた唯一の方法はdirname(__FILE__);、行きたい場所の前に追加することです。

  • 。または./ファイルの先頭に追加しても機能しませんでした...。

于 2012-05-24T18:09:18.640 に答える