Laravel报错:Target class [TestController] does not exist 求助排查
Laravel 9.31.0 「Target class [TestController] does not exist」报错解决方案
你的问题核心是命名空间大小写错误,Laravel的根命名空间是大写的App,而非小写的app——PHP命名空间严格区分大小写,以下是具体修正步骤:
1. 修正控制器引入语句
在routes/web.php里的引入代码需改为:
// 错误写法 // use app\Http\Controllers\TestController; // 正确写法 use App\Http\Controllers\TestController;
2. 修正完整路径路由写法
如果使用字符串形式指定控制器路径,要改成大写开头的命名空间:
// 错误写法 // Route::get('role', 'app\Http\Controllers\TestController@index'); // 正确写法 Route::get('role', 'App\Http\Controllers\TestController@index');
3. 修正RouteServiceProvider里的命名空间配置
在app/Providers/RouteServiceProvider.php中,把小写的app替换为大写App:
// 错误写法 // protected $namespace = 'app\\Http\\Controllers'; // 正确写法 protected $namespace = 'App\\Http\\Controllers';
额外排查点
- 确认
TestController.php文件确实存在于app/Http/Controllers目录下,文件名与类名完全一致(类名应为class TestController extends Controller) - 检查控制器文件顶部的命名空间声明是否正确:
namespace App\Http\Controllers; // 必须是大写App - 执行命令刷新类映射缓存:
composer dump-autoload
内容的提问来源于stack exchange,提问作者Vilius Gaidelis
相关产品推荐
相关产品推荐

