CodeIgniter中Class 'Public_Controller'未找到问题求助(本地正常服务器报错)
解决CodeIgniter中
Public_Controller未找到的问题 可能原因及对应解决方法
1. 文件名/类名大小写不匹配
Linux服务器严格区分文件名大小写,而Windows环境不区分。检查以下内容:
- 确认
Public_Controller的类文件名为Public_Controller.php(首字母及下划线后的字母均大写),而非public_controller.php或其他大小写组合。 - 检查
Auth.php中引入基类的语句,比如require_once APPPATH.'core/Public_Controller.php';,路径里的文件名必须和实际文件完全一致。
2. 基类文件存放路径错误
CodeIgniter自定义核心控制器默认存放目录为application/core/,请确认:
Public_Controller.php确实在application/core/文件夹内,而非controllers或其他目录。- 若修改过核心类存放路径,需在
application/config/config.php中调整$config['subclass_prefix']配置,确保框架能识别自定义基类的前缀。
3. 自动加载配置未配置
若未手动引入基类文件,需确保框架能自动加载:
- 打开
application/config/autoload.php,检查$autoload['core']数组中是否添加了'Public_Controller';若你的基类前缀不是默认的MY_,需修改config.php中的$config['subclass_prefix'] = 'Public_';。
4. 文件权限问题
服务器文件权限不足可能导致框架无法读取基类文件:
- 将
application/core/目录权限设置为755,目录内文件权限设置为644,确保Web服务器进程拥有读取权限。
5. 缓存或编译文件问题
若服务器开启了OPcache等缓存机制,可能缓存了旧的文件状态:
- 重启Apache/Nginx及PHP-FPM服务,清除OPcache缓存。
- 删除
application/cache/目录下的缓存文件(若存在)。
内容的提问来源于stack exchange,提问作者Mr. RStark
相关产品推荐
相关产品推荐

