求助:为何出现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
相关产品推荐
相关产品推荐

