1

次を使用してファイルをインクルードしようとしています:

require_once '../config/configVARS.php';

しかし、私はエラーが発生します:

Warning: require_once(../config/configVARS.php): failed to open stream: No such file or directory in ..../classes/FileHandler.php on line 2

Fatal error: require_once(): Failed opening required '../config/configVARS.php' (include_path='.:/opt/lampp/lib/php') in ..../classes/FileHandler.php on line 2

同じフォルダーにファイルを含めようとしても、エラーは発生しません (たとえば、configVARS ファイルを同じフォルダーにコピーすると、含めることができます)。

権限を確認しましたが、そうではありません(所有権もありません)。

何か案は?何が原因ですか?

4

2 に答える 2

2

ファイルが実際にそこにあることを確認してください。正しいファイル名を使用しているかどうかわからない場合は、相対パスではなく絶対パスを使用してください。

魔法の定数__DIR__Docsには、書き込み先のファイルの絶対位置が含まれているため、

require_once __DIR__ . '/concrete/path/to/file.php';

ファイルが存在する正確な場所を実際に知っているように見えるため、多くの場合、より明確です。事前に構成されたインクルードディレクトリを検索する必要はないようです。

于 2012-10-08T17:59:56.997 に答える
0

相対インクルードは常にトリッキーなテーマです。相対パスは、インクルードするファイルに応じて、あなたが考えているものとは異なる場合があります。ベストプラクティスは、通常、定義された定数をプレフィックスとして付けることにより、絶対参照を使用することです。

define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']);

require_once(BASE_PATH . 'path_to_include');

ここでよりよく説明されています:

http://yagudaev.com/posts/resolving-php-relative-path-problem/

于 2012-10-08T12:40:01.840 に答える