そこで、CodeIgniter が出力を表示しない理由 (404 などを除く) をトラブルシューティングしようとしています。phpやapache、codeigniterのエラーログからモジュールの書き換えまでチェックしました。すべてがうまく構成されているようです。
CodeIgniter のコア ファイルに飛び込み始めたところ、要求されたコントローラー クラスをインスタンス化しようとする以下の行でクラッシュしていることに気付きました。
$class = $RTR->fetch_class();
$method = $RTR->fetch_method();
echo 'looking for class: ' . $class . '<br/>';
if(class_exists($class) == false) {
)
{
echo 'class does not exist: ' . $class;
show_404("{$class}/{$method}");
}
}
/*
* ------------------------------------------------------
* Is there a "pre_controller" hook?
* ------------------------------------------------------
*/
$EXT->_call_hook('pre_controller');
echo '<br/>after precontroller';
/*
* ------------------------------------------------------
* Instantiate the requested controller
* ------------------------------------------------------
*/
// Mark a start point so we can benchmark the controller
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
echo '<br/>before class init: ' . $class;
$CI = new $class();
echo '<br/>after class init';
これは /core/CodeIgniter.php ファイル内にあります。出力は次のとおりです。
CodeIgniter.php
looking for class: servicecontroller
after precontroller
before class init: servicecontroller
基本的に、servicecontroller クラスを見つけることができると言っていますが、インスタンス化しようとするとクラッシュします。php エラー ログが有効になっており、display_errors がオンになっています。この近くで PHP エラーを強制すると、ページには表示されますが、このページには表示されません。なぜこの線を越えられないのか、誰にも分かりませんか?
servicecontroller.php は次のように配置されます。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class servicecontroller extends CI_Controller {
}