複数のクライアントに対して同じコア ファイルを持つ CodeIgniter (CI) でアプリケーションを作成する必要があります。すべてのクライアントは、自分の index.php ファイルがある自分のフォルダー (サブドメインを使用) でアプリケーションを実行します。その index.php には、そのユーザー データベースの構成が含まれています (すべてのユーザーには独自のデータベースがあります)。CI のすべてのフィールドとアプリケーションを 1 つの追加クラスにラップし、すべてのサブドメインのすべてのフォルダーにそのクラスのインスタンスを作成しようとしました。しかし、それはうまくいきませんでした。
次に、すべてのクライアント サブディレクトリの CI フォルダからメインの index.php を呼び出そうとしました。ファイル構造のイメージは次のとおりです: http://img208.imageshack.us/img208/8596/shx8.png
すべてのサブドメイン フォルダー内の index.php は次のようになりました。
include "../../../application/engine.php";
$app = new Engine();
$app->start();
次に、そのクライアント index.php を実行すると、次のようになります。
Your system folder path does not appear to be set correctly. Please open the
following file and correct this: index.php
そして、CI index.phpフォルダーのパスを次のように変更しました:
$system_path = '../../../application/engine/system';
$application_folder = '../../../application/engine/application';
次に、次のエラーが表示されます。
Fatal error: Call to a member function item() on a non-object in C:\wamp\www\projectX\application\engine\system\core\Utf8.php on line 47
ご覧のとおり、system\core ファイルにエラーが表示されます。編集しないでください。
Utf8.php の 47 行目は次のとおりです。
AND $CFG->item('charset') == 'UTF-8'
$CFG は次のように定義されます。
global $CFG;
その行をコメントしても、別のファイルで次のエラーが発生します。
Fatal error: Call to a member function elapsed_time() on a non-object in C:\wamp\www\projectX\application\engine\system\core\Output.php on line 360
Output.php の 360 行目は次のとおりです。
$elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end');
この問題を解決してこのように仕上げる方法はありますか、それともファイルとフォルダーの構成を変える必要がありますか? そして、それを行う方法は?