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

PHP MVC访问public目录报错:Trying to access array offset on value of type null

解决PHP MVC中" Trying to access array offset on value of type null"报错

问题根源

报错出现在访问$url[0]的代码行,核心原因是$url变量为null或空数组——当直接访问public目录(根路径)时,URL解析逻辑未生成有效的控制器名称数组,直接访问数组下标触发错误。

修复步骤

  1. 初始化$url变量,确保默认值存在
    在解析URL的代码段(通常在public/index.php或路由类中),修改$url的初始化逻辑,当没有传入URL参数时,默认指向Home控制器:

    // 替换原有的$url初始化代码
    $url = isset($_GET['url']) ? explode('/', trim($_GET['url'], '/')) : ['Home'];
    
  2. 增加数组有效性检查,避免空指针访问
    修改报错的代码块,先验证$url的有效性,再执行文件存在判断:

    // 替换原有的控制器判断代码
    if (is_array($url) && !empty($url[0]) && file_exists('../app/controllers/' . $url[0] . '.php')) {
        $this->controller = $url[0];
        unset($url[0]);
    } else {
        // 当控制器不存在时,默认使用Home控制器
        $this->controller = 'Home';
    }
    
  3. 设置默认方法为index
    在实例化控制器并调用方法的部分,确保当没有指定方法时,默认调用index方法:

    // 确定要调用的方法
    $method = !empty($url[1]) ? $url[1] : 'index';
    
    // 实例化控制器并调用方法
    $controller = new $this->controller();
    $controller->$method();
    

验证效果

完成上述修改后,直接访问public目录时,系统会自动加载../app/controllers/Home.php,实例化Home类并调用index方法,输出预期的home/index。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:18:28