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

PHP报错:Class 'sites\output\tab_gamify'未找到,求排查建议

排查PHP类加载报错:Class 'sites\output\tab_gamify' not found

加载编辑页面时出现如下异常:

Exception - Class 'sites\output\tab_gamify' not found

相关文件及代码如下:

文件路径:sites/classes/output/edit.php

<?php

namespace sites\output;

class edit extends tabs {

      public function __construct(array $attributes = []) {
             parent::__construct($attributes);

             ...
             ...
             $this->add_tab(new tab_gamify($attributes));
      }

}

文件路径:sites/classes/output/tab_gamify.php

<?php

namespace sites\output;

class tab_gamify extends tab {
      ...
      ...
}

已检查命名空间、重启Docker容器,问题仍未解决,以下是排查思路:

  • 检查文件大小写:Linux/Docker环境下文件系统区分大小写,确认tab_gamify.php的文件名拼写(包括大小写)和类名完全一致,比如是否写成了Tab_Gamify.php或者其他变体。
  • 验证自动加载机制:确认项目的自动加载规则(比如Composer的autoload配置、自定义自动加载函数)是否正确覆盖了sites/classes/目录,是否遵循PSR-4规范(命名空间对应目录结构)。可以手动调用spl_autoload_functions()查看当前注册的自动加载函数,排查是否能正确映射到该文件。
  • 检查文件权限:Docker容器内的PHP进程是否有读取tab_gamify.php文件的权限,执行ls -l sites/classes/output/查看文件权限,确保用户组/所有者与PHP进程一致。
  • 确认依赖类是否存在:tab_gamify继承自tab类,检查tab类是否已正确加载,命名空间是否正确,文件是否存在于对应目录。
  • 清理缓存:如果项目使用了OPcache或类缓存机制,尝试清理缓存(比如重启PHP-FPM、清空OPcache缓存),避免旧的缓存导致类无法加载。
  • 手动测试加载:在edit.php中添加require_once __DIR__ . '/tab_gamify.php';手动引入文件,测试是否还会报错,以此排查是否是自动加载的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:05:30