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

使用JWT生成Token时出现“Class JWT not found”错误求助

排查JWT类找不到的问题:Class 'JWT' not found

你遇到的这个错误核心原因很明确:PHP执行到JWT::encode()时,找不到对应的JWT类定义。虽然你确认服务器上存在包含JWT类的jwt.php文件,但大概率是类文件未被正确引入当前执行环境,或者存在命名空间、大小写匹配问题。下面是具体的排查和解决步骤:

1. 优先检查:是否引入了jwt.php文件

你的api.php代码里完全没有看到引入jwt.php的语句——PHP不会自动加载未显式引入的类文件,这是最常见的原因。

  • 如果jwt.php和api.php在同一个目录下,在api.php的类定义之前添加引入代码:
    <?php
    // 先引入JWT类文件
    require_once 'jwt.php';
    
    class Api extends Rest {
        // ... 你的类代码
    }
    ?>
    
  • 如果jwt.php在其他目录,建议使用绝对路径避免相对路径出错:
    require_once __DIR__ . '/../path/to/jwt.php';
    
    (__DIR__代表当前文件所在的目录,能有效避免因执行入口不同导致的路径问题)

2. 检查命名空间是否匹配

打开你的jwt.php文件,查看JWT类是否带有命名空间声明,比如:

namespace Your\Namespace;

class JWT {
    // ... 类实现
}

如果存在命名空间,你需要在api.php里做以下操作之一:

  • 用use语句导入JWT类:
    use Your\Namespace\JWT;
    
  • 调用时带上完整命名空间前缀:
    $token = Your\Namespace\JWT::encode($payload, SECRETE_KEY);
    

3. 检查文件名与类名的大小写(针对Linux/Unix服务器)

如果你的服务器是Linux或Unix系统,文件名是严格区分大小写的:

  • 比如实际文件是JWT.php(大写开头),但你引入的是jwt.php(小写开头),会导致文件找不到;
  • 同时要确保类名JWT和文件里的类定义名称完全一致(虽然Windows系统不区分,但严格规范能避免跨环境问题)。

4. 调试辅助:确认文件是否被加载

如果还是找不到问题,可以在api.php里添加调试代码,查看当前已加载的文件列表:

// 在调用JWT::encode()之前添加
var_dump(get_included_files());
exit;

执行接口后,检查输出结果里是否包含jwt.php的路径——如果没有,说明文件确实没被正确引入,回到步骤1重新排查路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:57:40