嘿,不知道为什么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网站上。
答案 0 :(得分:16)
在我的特定情况下,这是因为我尝试将数据库类与MySQLi一起使用,但我的目标环境没有安装MySQLi模块。出于某种原因,CI抑制了所有常见的错误输出,因此它将2分钟的调查转变为2小时的调查。
所以说,我会检查以下内容:
E_ALL
,并且display_errors已启用。如果您找不到任何错误输出,那么您将不得不深入挖掘。如果您安装了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个小时的搜索,这对我有所帮助。