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

求助:为何出现Fatal error: Uncaught Error: Class 'Inc\Hello' not found错误?

解决「Class 'Inc\Hello' not found」错误

嘿,这个错误我之前帮不少开发者排查过,核心问题出在类的加载路径匹配和自动配置上,咱们一步步来理清楚:

1. 先把目录结构掰正

你写的目录结构是my-plugin.php -- Inc Hello.php,这应该是表述有点问题——因为你的Hello.php里声明了namespace Inc;,按照Composer默认的PSR-4自动加载规则,这个类文件必须放在和命名空间同名的目录里,正确的目录结构应该是这样的:

my-plugin/
├─ my-plugin.php
└─ Inc/
   └─ Hello.php

如果你的Hello.php是直接和my-plugin.php同级(没放在Inc文件夹里),那自动加载器根本找不到它,因为它默认会去Inc目录下找对应命名空间的类文件。

2. 检查Composer的自动加载配置

如果目录结构是对的,那得确认你的composer.json里有没有正确配置自动加载规则。打开插件根目录的composer.json,添加PSR-4的映射:

{
    "autoload": {
        "psr-4": {
            "Inc\\": "./Inc/"
        }
    }
}

配置完之后,一定要在插件根目录跑这条命令更新自动加载映射:

composer dump-autoload

这条命令会更新vendor/autoload.php里的类路径信息,让Composer能准确定位到你的Inc\Hello类。

3. 快速测试的兜底方案

如果你暂时不想折腾Composer,或者想先验证类本身没问题,可以直接在my-plugin.php里手动引入Hello.php:

<?php
// 先手动加载类文件
require_once dirname(__FILE__) . '/Inc/Hello.php';

// 再调用静态方法
Inc\Hello::register_services();

这样不管自动加载有没有配置好,都能确保类被正确加载。

最后提两个容易踩的坑

  • 大小写问题:Linux服务器上文件名是区分大小写的,一定要保证Inc目录名和命名空间的Inc大小写一致,Hello.php和类名Hello大小写也得对应上。
  • 确认vendor目录存在:如果还没初始化过Composer,得先在插件目录运行composer init和composer install,生成vendor目录和autoload.php文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:51