Codeigniter 4在PHP 8.0版XAMPP下访问控制器报404如何解决
CodeIgniter 4 控制器404故障排查原因
1. 文件名与类名大小写不匹配
- PHP 8.0 对大小写校验严格程度高于PHP 7.4,Windows环境下XAMPP的PHP 7.4常自动兼容大小写不一致的情况,PHP 8.0会强制要求类名与文件名完全匹配
- 确认所有控制器文件名与类名完全一致,例如类名为
User的控制器文件必须命名为User.php,不允许是user.php或USER.php
2. 命名空间配置错误
- 所有控制器顶部的命名空间需要与文件路径对应,根目录下控制器默认命名空间为
namespace App\Controllers;,子目录Controllers/Admin/下的控制器命名空间必须为namespace App\Controllers\Admin; - 检查
app/Config/Autoload.php中的$psr4配置,确认默认配置'App' => APPPATH存在且未被修改
3. Apache重写规则异常
- 确认XAMPP Apache已开启
mod_rewrite模块:打开Apache配置文件httpd.conf,找到LoadModule rewrite_module modules/mod_rewrite.so,确保行首的注释符#已移除 - 确认项目根目录存在
.htaccess文件且规则与CodeIgniter 4官方要求一致,同时检查app/Config/App.php中$indexPage配置为public string $indexPage = '';
4. 路由配置异常
- 检查
app/Config/Routes.php中是否开启自动路由:$routes->setAutoRoute(true);,CodeIgniter 4默认关闭自动路由,如未手动配置控制器路由、也未开启自动路由会直接返回404 - 检查是否存在优先级更高的通配符路由,拦截了正常的控制器访问请求
5. 基础URL配置错误
- 检查
app/Config/App.php中$baseURL是否与当前项目访问路径匹配,例如项目存放在htdocs的ci4_demo目录下,$baseURL需要配置为http://localhost/ci4_demo/,错误的基础URL会导致路由路径匹配失败
6. PHP 8.0兼容问题导致类加载失败
- 开启调试模式确认具体报错:修改项目根目录
env文件,配置CI_ENVIRONMENT = development,再次访问控制器地址查看是否有语法报错 - 排查控制器内是否使用了PHP 7.4废弃、PHP 8.0不支持的语法,例如参数类型声明不匹配、废弃函数调用等,类初始化失败会间接返回404
内容的提问来源于stack exchange,提问作者Sameer
相关产品推荐
相关产品推荐

