2013-06-05 97 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的” 扩展名。

相关问题