1

ルートディレクトリにindex.phpファイルがあります。

<?php
require_once "./include/common.php";
?>

そして、includeフォルダーにcommon.phpをファイルします。

<?php
require_once "globalConfig.php";
?>

common.phpと同じフォルダーにあるglobalConfigファイル。ツリーフォルダは次のとおりです。

xxx / index.php

xxx / include / common.php

xxx / include / globalConfig.php

index.phpは正常に実行されます。しかし、ファイルcommon.phpを次のように変更すると、次のようになります。

<?php
require_once "./globalConfig.php";
?>

PHPは、globalConfig.phpファイルが見つからないという警告を表示します。違いはなんですか?「./」の場合、最も外部のインクルードファイル(index.php)は、現在のディレクトリにglobalConfig.phpを見つけると思います。

4

3 に答える 3

3

index.phpに追加します

define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));

そして、common.php内にそのようにインクルードします。

require_once BASE_PATH . '/includes/globalConfig.php';

これにより、正確なパスが検出され、スラッシュが標準化されます。次に、使用する場合は常にBASE_PATH、htdocsのルート(つまりindex.php)からインクルードします。

于 2010-09-07T10:36:45.270 に答える
2

パスは現在の作業ディレクトリからの相対パスです。Webコンテキスト(php-cgi)では、これは最初に呼び出されたスクリプト(onを介してではなく直接開始されるスクリプト)がinclude存在するディレクトリです。簡単な回避策:

require_once dirname(__FILE__) . '/foobar.inc.php';
于 2010-09-07T10:36:12.490 に答える
1

パス(つまり「./」)は、それに含まれるファイルではなく、BASEスクリプトに関連していると思います。このため、スクリプトを含めるときは通常、絶対パスを使用します。

于 2010-09-07T10:30:16.857 に答える