Laravel生产环境web.php报错Class "App\Models\Device"未找到
问题根因&解决步骤
- 命名空间大小写不匹配
你的Device模型定义的命名空间为namespace App\Models;(首字母A大写),但web.php中引入时写的是use app\Models\Device;(首字母a小写)。Debian系统大小写敏感,二者必须完全一致才能被自动加载识别。
直接修正web.php的引入语句为:
use App\Models\Device;
- 检查模型文件路径&名称
你贴出的目录结构中Models目录下写的是Device,这存在两种错误可能:
- 若为文件夹:完全错误,Device模型是独立的PHP文件,不能放在同名文件夹下
- 若为文件名:缺少
.php后缀,正确的模型路径必须是app/Models/Device.php,需严格匹配大小写:Models首字母大写、Device首字母大写、后缀为.php
- 核对composer自动加载配置
打开项目根目录的composer.json文件,找到autoload.psr-4配置段,确保默认映射为:
"App\\": "app/",
该配置的作用是将首字母大写的App命名空间映射到根目录下小写的app文件夹,是Laravel默认的自动加载规则,不要随意修改。
- 清理缓存生效配置
上述修改完成后依次执行以下命令:
composer dump-autoload php artisan config:clear php artisan route:clear
避免旧的缓存配置影响加载。
- 可选权限校验
你之前将目录所有权设置为admin用户,需确认Nginx运行用户(默认是www-data)对storage和bootstrap/cache目录有读写权限,避免后续出现其他访问错误。
内容的提问来源于stack exchange,提问作者Fabio R.
相关产品推荐
相关产品推荐

