CodeIgniter 4.0访问控制器URL反复出现404错误排查
CodeIgniter 控制器访问返回404问题解决
你当前代码的核心问题是缺少控制器对应的命名空间声明,CodeIgniter 4 采用 PSR4 自动加载规范,app/Controllers 目录下的所有类必须声明App\Controllers命名空间,否则框架无法定位到控制器类,会直接返回404且默认生产环境下不输出具体错误。
修正后的控制器代码
将app/Controllers/Demo.php的代码替换为以下内容即可:
<?php namespace App\Controllers; // 这行是你原有代码缺失的关键声明 use CodeIgniter\Controller; class Demo extends Controller { public function test() { echo 1; } }
其他可能触发404的排查点
如果修正命名空间后仍无法访问,依次检查以下配置项:
- 文件名大小写匹配:Linux 环境严格区分文件名大小写,控制器文件名必须和类名完全一致,即必须命名为
Demo.php,不能使用demo.php、DEMO.php这类大小写不匹配的命名。 - 自动路由开关检查:打开
app/Config/Routes.php配置文件,确认$routes->setAutoRoute(true);配置项为开启状态。如果该值设为false,框架只会匹配你手动定义的路由规则,未手动配置的路径会直接返回404。 - 方法访问修饰符检查:控制器中可供外部访问的方法必须使用
public修饰,private、protected修饰的方法无法通过URL直接访问,会触发404。 - 开启调试模式定位问题:如果需要查看完整错误链路,可以将项目根目录下的
env示例文件重命名为.env,将文件内的CI_ENVIRONMENT = production修改为CI_ENVIRONMENT = development,开启开发调试模式后,路由不匹配、类加载失败、语法错误等问题都会输出完整报错信息,无需盲查问题。
内容的提问来源于stack exchange,提问作者wdm_wcy
相关产品推荐
相关产品推荐

