2013-06-05 95 views
2

所以我試圖解決爲什麼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 { 
} 
+1

嘗試將您的類更改爲'class Servicecontroller extends CI_Controller' ...它在文檔中明確提到類名必須以大寫字母開頭,小寫字母無效。 – keithhatfield

+0

呃...似乎沒有做任何事情: - \ –

回答

0

沒有核心系統文件夾做。

  1. 更新系統文件夾複製到的index.php文件夾中的最新一個
  2. 檢查.htaccess文件
  3. 檢查你的config/route.php文件
  4. 如果主機檢查mod_rewrite的Apache模塊啓用
7

好的,這個問題的根源是使用mysql_connect連接到數據庫的錯誤。出於某種原因,它不會產生任何錯誤,也不會「或死(」錯誤...「);做任何事情。這是因爲我們在服務器上使用php 5.4,並且mysql_connect似乎不再受支持,除非你安裝了mysqlnd,解決方案是將數據庫驅動程序切換到'mysqli',CodeIgniter幸運地有一個驅動程序,然後安裝php5-mysql:apt-get install php5-mysql 希望這可以幫助其他人。

0

我使用表達式引擎有這個問題,這個問題是數據庫連接 - 我使用的流浪,所以我不得不設置端口在數據庫配置文件,然後它的工作

1

我已經解決了我的問題。 。

打開:config/database.php

查找:$db['default']['dbdriver'] = 'mysqli'; 替換有:$db['default']['dbdriver'] = 'mysql';

或者,啓用PHP中的 「mysqli的」 擴展名。

相關問題