【问题标题】:Unable to locate the specified class: Session.php in Codeigniter无法找到指定的类:Codeigniter 中的 Session.php
【发布时间】:2015-07-02 17:31:52
【问题描述】:

浏览器:

找不到指定的类:Session.php

这是我的控制器:

<?php

class Chat extends CI_Controller {

    public function __construct() {

        parent::__construct();
        $this->load->model('Chat_model');
    }

    public function index() {

        $this->view_data['chat_id'] = 1;
        $this->view_data['student_id'] = $this->session->userdata('student_id');
        $this->view_data['page_content'] = 'chat';
        $this->load->view('chat');
    }

    public function ajax_addChatMessage() {

        $chat_id = $this->input->post('chat_id');
        $student_id = $this->input->post('student_id');
        $bericht = $this->input->post('chat_id', TRUE);

        $this->Chat_model->addChatMessage($chat_id, $student_id, $bericht);
    }
}

当我将我的模型放在 parent::__construct(); // $this-&gt;load-&gt;model('Chat_model'); 的评论中时,错误消失了。

这是我的 Chat_model:

<?php

class Chat_model extends CI_Controller {

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

    public function addChatMessage($chat_id, $student_id, $bericht) {

        $query = "INSERT INTO tbl_chatberichten (chat_id, student_id, bericht) VALUES (?,?,?)";
        $this->db->query($query, array($chat_id, $student_id, $bericht));

    }

}

【问题讨论】:

  • 那么你的问题出在模型上吧?你能告诉我们你在那里得到的代码吗?是否构建了父模型类?
  • 我在我的问题中添加了它
  • 你能用__construct()代替Chat_model()吗? Codeigniter 推荐它,也许这就是问题所在。
  • $this->load->library('session');在您的控制器父构造函数中编写此代码并尝试
  • 按照你们说的做了,还是一样的错误

标签: php codeigniter model


【解决方案1】:
class Chat_model extends CI_Controller

应该是

class Chat_model extends CI_Model

【讨论】:

  • 如果我有类 Api 扩展 REST_Controller(REST_Controller 扩展 CI_Controller)怎么办
  • @SagarKapasi099 我不确定这个问题和答案有什么关系。但是,包文档中的basic example 就是这样:Api 扩展了 Rest_Controller。您可能应该发布单独的问题并详细解释您的意思。在这里查看how to ask perfect question
【解决方案2】:

如果您使用 Codeigniter Modular Extensions HMVC,如果您忘记将类更改为扩展 MX_Controller 而不是 CI_Controller,则会发生此错误

所以在你的情况下,你会开始你的课程:

class Chat extends MX_Controller {}

代替:

class Chat extends CI_Controller {}

【讨论】:

    【解决方案3】:

    当我使用类名 Pdf.php 涉及 PDF 库并通过 autoload 将其加载为 'pdf' 时,我收到相同的错误消息。

    我的错误,将显示我的页面的控制器我也命名为 Pdf.php,并且出现错误消息(这就是我发现这个问题的原因:))。在我将控制器的名称替换为另一个名称后,问题立即得到解决。

    【讨论】:

      【解决方案4】:

      将更改添加到 application/config/autoload.php 文件中的库配置中

      $autoload['libraries'] = array('database', 'session');
      

      并在 application/config/config.php 中设置加密密钥(你喜欢的任何密钥)

      $config['encryption_key'] = 'thu23456789#[n,';
      

      如果您仍然遇到同样的错误,请复制 System/library/Session/Session.php 到 System/library/ 文件夹,然后它 应该工作

      【讨论】:

        【解决方案5】:

        我的解决方案: 前言:如果你不使用钩子,这将不是你的解决方案。

        升级到 v3.0.6 后,我也遇到了同样的问题,而且我的所有设置都正确无误,因为这是一个刚刚升级到 v3+ 的现有站点。我的问题归结为我加载“预控制器”的钩子。我的钩子适用于 CodeIgniter 的 v 2.0.X,但不适用于 v3+。

        如果你在加载会话类之前加载钩子,并且你的钩子依赖于会话类,那可能是你的罪魁祸首。尝试将任何前置控制器挂钩更改为后置控制器,或将它们完全注释掉以查看是否能解决您的问题。这都位于 application/config/hooks.php 中。

        【讨论】:

          【解决方案6】:

          我遇到了同样的错误。我在--->上附加了“会话” 你的项目/应用程序/配置/autoload.php

          $autoload['drivers'] = array("session");
          

          【讨论】:

            【解决方案7】:

            application/config/autoload.php 文件中更改您的加载库配置

              $autoload['libraries'] = array('database', 'session');
            

            application/config/config.php 中设置加密密钥(你喜欢的任何密钥)

              $config['encryption_key'] = 'thu23456789#[n,';
            

            【讨论】:

            • 这是我得到的密钥:$config['encryption_key'] = '23KJ31HD0SFKJ3';
            【解决方案8】:

            在我的例子中,库名和控制器类名是相同的,即我的控制器类名是Ajaxer,我的库类名也是Ajaxer。我将我的库类名称更改为 Ajaxer_lib 并解决了这个问题。

            【讨论】:

              【解决方案9】:

              在您的 Chat_model 中,尝试将 class Chat_model extends CI_Controller 更改为 class Chat_model extends CI_Model

              【讨论】:

                【解决方案10】:

                如果上述解决方案都不起作用,我的解决方法是:

                在我的自动加载配置中,我有一个名为“auth”的库。

                但是,在我的自定义控制器中,不知何故它被搞砸了,因为“auth”没有被自动加载(我已经检查了所有内容)。因为我只在登录时使用它,所以我将它从我的自动加载配置中删除并加载到我的自定义控制器中。

                我以前从未遇到过这个问题,但突然有一天它发生了。

                使用 [CodeIgniter v3]

                【讨论】:

                  【解决方案11】:

                  添加它而不是您的 Chat 控制器构造函数

                   public function __construct() {
                  
                      parent::__construct();
                      $this->load->library('session');
                      $this->load->model('Chat_model');
                  }
                  

                  这会将会话库加载到您的控制器,以便您可以使用这些方法。

                  【讨论】:

                    【解决方案12】:

                    模型扩展 CI_Model 而不是 CI_Controller 类 Chat_model 扩展 CI_Model { ...... }

                    【讨论】:

                      【解决方案13】:

                      在 application/config/autoload.php 文件中修改你的库配置

                      $autoload['libraries'] = array('database','ci_session');
                      

                      在 application/config/config.php 中为您的应用程序设置加密密钥

                      $config['encryption_key'] = 'sdjfkdjkfj';
                      

                      复制 system/libararies/Session/Session.php 到 application/libraries/ 将 application/libraries/Session.php 重命名为 CI_Session.php

                      现在,CI_Session 对象将通过以下行提供

                      $this->ci_session
                      

                      【讨论】:

                        猜你喜欢
                        • 2018-07-28
                        • 2019-10-23
                        • 2018-04-23
                        • 1970-01-01
                        • 1970-01-01
                        • 2017-06-21
                        • 1970-01-01
                        • 2015-04-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多