Laravel 10 JWT API本地正常部署后报错:目标控制器不存在
解决Laravel 10部署后“Target class [App\Http\Controllers\TestController] does not exist”错误
问题背景
使用Laravel 10搭建集成JWT的API项目,本地环境运行正常,但部署到服务器后出现错误:Target class [App\Http\Controllers\TestController] does not exist。
控制器代码
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { function index() { $test = ['Test 1', 'Test 2', 'Test 3']; return response()->json([ 'test' => $test, ]); } }
路由api.php代码
use App\Http\Controllers\TestController; // Route::group(['prefix' => 'v1'], function () { Route::get('/test', [TestController::class, 'index']); });
本地请求正常返回结果:
// 20230724104212 // http://localhost:8000/api/v1/test { "test": [ "Test 1", "Test 2", "Test 3" ] }
解决步骤
检查文件路径与大小写
本地Windows系统不区分文件大小写,但服务器多为Linux系统,严格区分大小写。确认服务器上控制器文件路径为app/Http/Controllers/TestController.php,文件名TestController.php的大小写和类名TestController完全一致。清除Laravel缓存
部署后缓存可能未更新,导致路由映射异常,在服务器终端执行以下命令:php artisan cache:clear php artisan route:clear php artisan config:clear php artisan optimize:clear更新Composer自动加载
重新生成类映射文件,确保Composer能正确识别控制器类:composer dump-autoload确认命名空间与类名一致性
再次检查控制器文件中的命名空间namespace App\Http\Controllers;是否正确,类名class TestController extends Controller必须和文件名完全匹配。
内容的提问来源于stack exchange,提问作者Edi Prasetyo
相关产品推荐
相关产品推荐

