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

Laravel7升级至10后报错:Target class [set_locale]不存在

解决Laravel 7升级到10后「Target class [set_locale] does not exist」错误

问题原因分析

从你提供的文件来看,这个错误主要由两个核心原因导致:

  1. 中间件文件名与类名不匹配
    你提供的中间件文件名为SetLocal.php,但类定义是SetLocale。Laravel遵循PSR-4自动加载规范,要求类文件名必须和类名完全一致(Linux环境下还区分大小写),这直接导致框架无法找到对应的中间件类。

  2. 升级后缓存未清理
    Laravel升级后,旧的路由、配置或容器缓存可能没有更新,导致框架仍然使用过期的中间件映射关系。

解决步骤

1. 修正中间件文件名

将app/Http/Middleware/SetLocal.php重命名为SetLocale.php,确保文件名和类名完全一致(注意末尾的e)。

2. 清理Laravel缓存

运行以下命令清除所有缓存:

php artisan cache:clear
php artisan route:clear
php artisan config:clear

3. 验证中间件注册

确认app/Http/Kernel.php的$routeMiddleware数组中,set_locale的映射配置正确(你当前的配置是没问题的):

'set_locale' => \App\Http\Middleware\SetLocale::class,

4. Linux环境额外检查

如果部署在Linux服务器上,确保文件名大小写与类名严格一致(比如SetLocale.php而非setlocale.php),因为Linux文件系统区分大小写。

补充排查文件(若问题仍存在)

如果执行上述步骤后错误依旧,需要提供以下文件进一步定位问题:

  • composer.json:检查PSR-4自动加载规则是否正确配置
  • composer dump-autoload命令的执行输出,确认自动加载映射是否更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:23:10