为什么Code Igniter会给我一个白页?

时间:2010-01-27 18:21:23

标签: php codeigniter

嘿,不知道为什么CodeIgniter在我加载一个简单的模型时会给我一个空白页面。我正在打破代码,倒退,我无法弄清楚什么是破坏。这是控制器:

class Leads extends Controller {

function Leads() {
    parent::Controller();
    $this->load->scaffolding('leads');
  }

function index() {
    $data = array( 'title' => 'Lead Management' );

    $this->load->view('html_head', $data);
    $this->load->view('leads/home');
    $this->load->view('html_foot');

  }

function view() {
    $this->load->model('Leads');
    $this->load->view('html_head');
    $this->load->view('leads/view');
    $this->load->view('html_foot');
  }

}

以下是模型:

class Leads extends Model {

function Leads()    {
    parent::Model();
}

}

我在/ view上没有白页的唯一方法是注释掉模型的加载。我完全不知道我做错了什么,我正在复制示例和结构,直接在CI网站上。

7 个答案:

答案 0 :(得分:16)

啊,经典的Codeigniter白屏死机。我第一次使用CI遇到了这个问题。令人难以置信的是,这样一个流行的框架可能导致这样的事情没有错误输出。

在我的特定情况下,这是因为我尝试将数据库类与MySQLi一起使用,但我的目标环境没有安装MySQLi模块。出于某种原因,CI抑制了所有常见的错误输出,因此它将2分钟的调查转变为2小时的调查。

所以说,我会检查以下内容:

如果您找不到任何错误输出,那么您将不得不深入挖掘。如果您安装了xdebug,我强烈建议您使用它...将代码包围在跟踪中,看看它在哪里窒息。

我最终必须通过深入了解框架类本身并转储输出(没有xdebug可用)来找到我的WSOD的原因。这不好玩,但最终有效。

答案 1 :(得分:12)

您的两个类都被命名为“Leads”。当CI包含这些时,它们将加载到同一名称空间中。您可能有"Cannot redeclare class 'Leads'"错误。尝试重命名模型,你应该没问题。

编辑:猜测确认

答案 2 :(得分:2)

正如Cassy猜测的那样,你的命名存在问题 - CI无法处理具有相同名称的模型和控制器。将您的Leads模型重命名为其他内容并尝试重新加载页面。 应该解决问题。

答案 3 :(得分:2)

我通过在类中添加名称_controller或_model来区分我的控制器和模型。这消除了类的混淆。尝试将它们重命名为
Leads_Controler和Leads_Model。

答案 4 :(得分:1)

白屏死机的另一个原因是启用查询缓存或记录lutputtibg,相应的文件夹不可写。那让我好几次!

答案 5 :(得分:1)

刚刚在一个非常不愉快的夜晚花了很多时间才解决了同样的问题。

正如Zombat指出的那样,我的问题是我忘了在我的linux盒子里安装php5-mysql模块。

一旦apt-get安装了mysql模块,一切都按预期开始播放。

Noob,我知道。但我希望CI在处理此类异常方面有更好的行为。单行日志可以节省大量时间和诅咒。

答案 6 :(得分:0)

使用我的第一个模型后,我有一个白色的空白页面。解决方案是,如果您使用Codeigniter 2+,则需要从CI_Model而不是Model扩展。所以模型的类应该说class myModel extends CI_Model。经过4个小时的搜索,这对我有所帮助。