You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter3本地登录正常,部署到域名后报错求助

问题原因分析

1. 模型加载失败(核心诱因)

错误Undefined property: Login::$login直接说明Login控制器中尝试访问的$this->login属性未初始化,本质是Login_model模型未成功加载,进而导致调用getDefaultValues()时对象为null,触发第二个错误。具体常见原因如下:

(1)文件名/类名大小写不匹配

本地Windows环境不区分文件大小写,但服务器多为Linux/Unix系统,严格区分大小写:

  • 若模型文件名是login_model.php(全小写),但控制器中加载时用$this->load->model('Login_model'),Linux下会找不到文件;
  • 若模型类名写成login_model(全小写),而非规范的Login_model,也会导致加载失败。

Codeigniter 3规范要求:模型文件名需与类名一致,首字母大写(如Login_model.php对应类class Login_model extends CI_Model {}),加载时建议使用小写模型名:$this->load->model('login_model'),或指定别名:$this->load->model('login_model', 'login')(这样才能通过$this->login访问)。

(2)模型加载的别名错误

若控制器中通过别名login访问模型,需确认加载代码是否正确:

正确写法:$this->load->model('Login_model', 'login')
如果漏写别名参数,默认属性名是$this->login_model,而非$this->login,直接访问$this->login就会触发未定义属性错误。

(3)模型文件路径或权限问题

  • 检查服务器上模型文件是否存在于application/models/目录下,若放在子目录需在加载时指定路径(如$this->load->model('auth/Login_model'));
  • 确认服务器上模型文件的权限是否为可读(通常设置为644),权限不足会导致PHP无法读取文件内容。

2. MY_Controller的潜在影响

若自定义MY_Controller中存在全局模型加载逻辑,需检查:

  • 是否在MY_Controller中错误覆盖了模型加载方法;
  • 是否在Login控制器继承MY_Controller时,父类构造函数未调用parent::__construct(),导致CI核心功能未初始化。
排查步骤
  • 先核对服务器上application/models/下的模型文件名、类名与本地是否一致,确保大小写完全匹配;
  • 确认Login控制器中模型加载代码的别名是否正确,示例:
    // 确保加载时指定了别名'login'
    $this->load->model('Login_model', 'login');
    
  • 查看服务器的PHP错误日志,获取更详细的加载失败原因;
  • 在控制器构造函数中添加var_dump($this->login),直接输出模型对象状态,确认是否加载成功。

内容的提问来源于stack exchange,提问作者Akali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:40:03