3

require_once への相対パスの割り当てに問題があります。私はそれが私が見ていない単純なものだと確信しています...

フォルダ ディレクトリ構造 レベル 1: サイト レベル 2: インクルード レベル 2: クラス

so... site/include/global.php <-- これは、関数 autoload が site/class/db.php から呼び出される場所です

使用しようとすると

function__autoload($className)
{
     require_once '../class/'.$className.'.php';

}

私は得る:

警告: require_once(../class/db.php) [function.require-once]: ストリームを開くことができませんでした: そのようなファイルまたはディレクトリはありません

致命的なエラー: require_once() [function.require]: 必要な '../class/db.php' (include_path='.;./includes;./pear') を開くことができませんでした

私は何を間違っていますか?クラスフォルダーにglobal.phpを配置すると問題なく動作するので、問題の原因となっている相対パスの理解が不十分であると想定しています..

ありがとう

4

2 に答える 2

10

require(_once)最初のスクリプト、つまり実際に呼び出されたスクリプトinclude(_once)のパスに対して相対的に動作します。

インクルード ファイルまたは必須ファイルで何かを行う必要がありrequire、そのファイルに関連して作業したい場合は、次を使用します。

dirname(__FILE__)."/path/to/file";

または@Arkhが指摘するように、PHP 5.3以降

__DIR__."/path/to/file";
于 2010-02-12T17:18:29.960 に答える
0

これは機能しますか(Apacheのみ、私は信じています

require_once($_SERVER['DOCUMENT_ROOT'] . '/class/' . $classname '.php');
于 2010-02-12T17:16:01.717 に答える