5

そこで、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 {
}
4

4 に答える 4

9

さて、この問題の根本原因は、mysql_connect を使用してデータベースに接続する際のエラーでした。何らかの理由で、エラーはまったく発生せず、"or die("error..."); も何もしませんでした。これは、サーバーで php 5.4 を使用していたためで、mysql_connect はサポートされていないようです。 , mysqlnd がインストールされていない場合. 解決策は、データベース ドライバーを 'mysqli' に切り替えることでした.これは幸運にも CodeIgniter にドライバーがあり、次に php5-mysql を次のコマンドでインストールします: apt-get install php5-mysql

于 2013-06-06T17:31:25.767 に答える
3

問題を解決しました。

あなたを開く:config/database.php

検索:$db['default']['dbdriver'] = 'mysqli'; それを次のように置き換えます:$db['default']['dbdriver'] = 'mysql';

または、PHP で「mysqli」拡張機能を有効にします。

于 2016-02-29T09:46:57.850 に答える
0

Expression Engine を使用してこの問題が発生しました。問題はデータベース接続でした。Vagrant を使用しているため、データベース構成ファイルにポートを設定する必要がありました。

于 2014-03-20T00:47:14.127 に答える
0

コアシステムフォルダで行うことはありません。

  1. システムフォルダを最新のものに更新する
  2. index.php フォルダー内の .htaccess ファイルを確認します
  3. config/route.php ファイルを確認してください
  4. ホスト チェックで mod_rewrite Apache モジュールが有効になっている場合
于 2013-06-06T16:06:49.920 に答える