【问题标题】:Codeigniter Call to a member function set_userdata() on a non-objectCodeigniter 调用非对象上的成员函数 set_userdata()
【发布时间】:2026-01-21 04:30:02
【问题描述】:

我刚刚从 php4 共享主机移动到 php5 共享主机的 CI 应用程序出现致命错误。

Fatal error: Call to a member function set_userdata() on a non-object in /home/chuck_ravenna/bob.ravennainteractive.com/system/application/helpers/authenticate_helper.php on line 13

完整的代码位于下面的链接中

https://gist.github.com/1474173

我正在尝试确定 php 版本是否可能是问题所在。该站点在旧服务器上运行良好,而新服务器没有 php4 作为选项。

中断的具体代码行是:

    $this->session->set_userdata("admin", $user[0]["admin"]);

【问题讨论】:

  • 你为什么打电话给session_start()并使用$_SESSION["user"],而不是仅仅使用CI Session库?

标签: php codeigniter php4


【解决方案1】:

您不能在助手中使用$this,因为助手文件只是函数的集合(那里没有类)。要使用控制器的$this 提供的功能,您必须这样做:

$ci = & get_instance();
$ci->session->set_userdata("admin", $user[0]["admin"]);

【讨论】:

    【解决方案2】:

    $CI =& get_instance();

    $CI->load->library('session');

    【讨论】:

      【解决方案3】:

      您是否在构造函数中和 parent::__construct() 指令之后加载会话库?

      【讨论】:

        【解决方案4】:

        您正在使用 Codeigniter 的默认配置。 问题是:没有完成数据库配置! 您必须在此处输入:\YOUR_APPLICATION_NAME\application\config\database.php

        您必须使用文本编辑器打开此文件。

        设置以下变量就完成了:

        $active_group = "default";
        $active_record = TRUE;
        $db['default']['hostname'] = "127.0.0.1";
        $db['default']['username'] = "root";
        $db['default']['password'] = "";
        $db['default']['database'] = "NameOfYourDatabase";
        

        【讨论】:

          最近更新 更多