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

CodeIgniter 3.1.7服务器报错:Class 'MY_Controller'未找到

解决Fatal error: Class 'MY_Controller' not found的服务器端问题

我之前也碰到过一模一样的坑!结合你描述的情况——本地开发完全正常,服务器端才报这个错,而且subclass_prefix配置正确、MY_Controller.php也放在了application/core目录,大概率是服务器环境的特性导致的,给你几个实操性的排查和解决方向:

  • 检查服务器文件系统的大小写敏感性
    本地Windows/macOS默认是大小写不敏感的,但Linux服务器是严格区分大小写的!确认你的核心子类文件名是严格的MY_Controller.php,别写成my_controller.php、My_Controller.php这类变体——CodeIgniter加载核心子类时会严格匹配文件名,这是最常见的服务器端踩坑点。

  • 验证配置文件是否真的生效
    有时候部署服务器时,旧的config.php没被覆盖,或者缓存导致配置没更新。可以在Posts.php的开头加一行调试代码:

    var_dump($this->config->item('subclass_prefix'));
    exit;
    

    访问页面看看输出是不是string(3) "MY_",如果不是,重新上传正确的config.php文件,或者清理服务器的缓存(比如OPcache)。

  • 检查文件和目录权限
    服务器上的Web进程(比如www-data用户)可能没有读取application/core/MY_Controller.php的权限。把文件权限设置为644,目录权限设置为755,确保Web服务器能正常读取这个文件。

  • 确认本地和服务器的CI版本一致
    如果本地用的是CodeIgniter 3,服务器却是CI2,或者反过来,核心子类的加载机制可能有差异。对比两边的CI版本,确保版本一致,避免版本兼容问题。

  • 手动引入核心子类(临时调试)
    要是上面的方法都没解决,可以在Posts.php的开头手动引入MY_Controller.php,测试是不是自动加载机制出了问题:

    require_once APPPATH . 'core/MY_Controller.php';
    
    class Posts extends MY_Controller {
        // ...你的代码
    }
    

    如果这样能正常运行,说明服务器的PHPinclude_path配置有问题,或者CodeIgniter的核心加载逻辑被意外修改了,需要进一步排查PHP环境配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:58:10