CIを介してトレースすることでそれを理解しました。あなたはこれを行うことができないことが判明しました。独自のコントローラーを/application/ controllersのサブディレクトリに配置することはできますが、他の場所に配置することはできません。特に、http ://codeigniter.com/user_guide/libraries/loader.htmlが示すように、
これらの要素は、ライブラリ(クラス)ビューファイル、ヘルパー、モデル、または独自のファイルにすることができます。
コントローラを含まない「独自のファイル」。CodeIgniter.phpとRouter.phpに変更を加えることで、APPPATHに加えてENVIRONMENT設定を参照できるようになりました。ただし、このような変更は好きではないので、変更を取り消しました。他の誰かがそれから利益を得ることができる場合に備えて、これをここに置きます。
Router.phpの変更:
function _validate_request($segments)
{
...
// Does the requested controller exist in the root folder?
if (file_exists(APPPATH.'controllers/'.$segments[0].'.php')
|| file_exists(ENVIRONMENT.'/controllers/'.$segments[0].'.php')) // New bit here
{
return $segments;
}
....
}
CodeIgniter.phpの変更、'246行目あたり:
if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
{
// New bit here
if ( ! file_exists(ENVIRONMENT.'/controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
{
show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
}
include(ENVIRONMENT.'/controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
} else {
include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
}