调用父构造函数时,CodeIgniter Controller会中断

时间:2013-09-09 22:53:43

标签: php codeigniter

我在helloworld.php中有以下代码:

<?php

class Helloworld extends CI_Controller {

public function __construct()
{
    parent::__construct();
}

public function index()
{
    $this->load->model("helloworld_model");
    $data["result"] = $this->Helloworld_model->getData();
    $data["page_title"] = "CI Helloworld appis";
    $this->load->view("helloworld_view", $data);
}

}

?>

代码在调用父构造函数后停止执行,而不会给出任何错误消息。 /var/log/apache2/error.log中也没有任何内容出现。如果我在构造函数调用之前回显一些东西,它就会被回显。如果我在构造函数调用之前键入乱码,则会打印正确的错误消息。为什么会这样?

该站点使用Code Igniter 2.1.4在Ubuntu服务器12.04上运行。和PHP 5.3。

其他文件是helloworld_model.php:

<?php

class Helloworld_model extends CI_Model {

public function __construct()
{
    parent::__construct();
    $this->load->database();
}

public function getData()
{
    $query = $this->db->get("data");

    if ($query->num_rows() > 0)
    {
        return $query->row_array();
    }
    else
    {
        show_error("Database is empty");
    }
}

}

?>

和helloworld_view.php:

<html>
<head>
    <title><?php echo $page_title ?></title>
</head>

<body>
    <?php foreach($result as $row): ?>
        <h3><?php echo $row["title"]?></h3>
        <p><?php echo $row["text"]?></p>
        <br />
    <?php endforeach ?>

</body>
</html>

据我所知,Controller构造函数绝对是首先被调用的,所以我不认为其余的文件在这个阶段很重要(?)。

2 个答案:

答案 0 :(得分:3)

通过将您'dbdriver' => 'mysqli'中的'dbdriver' => 'mysql'更改为config/database.php,我遇到了同样的问题。还要确保数据库连接参数正确。

答案 1 :(得分:1)

我的猜测,我必须看到你的配置,确保你Loader的初始化存在问题。最常见的是这与自动加载的库有关,有时它与错误的数据库配置有关。我的第一个建议是尝试使用默认配置工作。如果有效,那么你就有了一个很好的起点。