Target class [SearchController] does not exist.不是普通的找不到类的问题而已,很麻烦

1. 运行环境

win10 宝塔lnmp

1). 当前使用的 Laravel 版本?

laravel 7.30.4

2). 当前使用的 php/php-fpm 版本?

PHP 版本:

PHP 7.3.28

3). 当前系统

win10

4). 业务环境

开发环境

5). 相关软件版本

nginx-1.21.1 mysql-5.6.51 redis-6.0.5
“dingo/api”: “v3.0.5”,

2. 问题描述?

背景:本地刚git提交完,准备开始写新的模块(此时都是OK,分支上是干净的,完全是一个新的开始)

php artisan make:controller \\Api\\V1\\Controllers\\SearchController

然后我就像往常一样正常的写控制器,写了一个方法后往添加路由(和以前一样,常规操作)

结果就这样了
我看到第一个反应是这个类没有找到,但是不是类文件没有找到,我首先检查大小写,感觉大小写没有问题,再说这是win10,不是我测试服的ubuntu20.4,大小写应该是不敏感的。
然后我接下来的尝试过的操作:
1.手动修改类文件名和文件类名,相应的路由名变更,就是各加了个a

这个时候意识到问题有点大了,说明我改的东西框架并没有感应到
2.删除刚创建的SearchController.php文件和api.php中的路由

此时分支干净,跟没有创建SearchController.php文件和往api.php添加路由之前是一样的,但仍然报错
3.清缓存


还是报这个错,缓存都请不了
考虑是不是php和nginx中的缓存问题

不行
重启nginx,结果不行
然后重启了电脑,还是不行
于是我麻了




删除了cache/data文件夹 ,结果还是不行
4.更神奇的是我已经删除了跟SearchController相关的一切


只剩下日志了
还是

现在就应为这个问题我所有的接口都报这个相关的错误

这个项目都停摆了

所有命令都报错

3. 您期望得到的结果?

现在php artisan xxx这个就用不了了,因为说类找不到么 我就用这个命令再创建还是报错

想让他不报错,可以正常进行业务

4. 您实际得到的结果?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

你先把报错的那个类用include加上,解决报错问题后再检查哪的问题吧。那个类为没有命名空间的全局类

2年前 评论
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
讨论数量: 41

甚至composer update了
其实这个行为没意义,只是死马当活马医
现在想是不是

php artisan make:controller \\Api\\V1\\Controllers\\SearchController

这个命令注册了一些容器之类的东西 然后引发的问题,具体说不上来 哎 真的麻了
还是希望站内大佬出来发现核心问题指点一下:sob:

2年前 评论

不要带着先入为主的思路去解决问题:

  1. 检查命名空间大小写
  2. 是否有路由组,路由组是否声明了命名空间?
  3. 在同样的位置注册另一个路由地址,使用其他控制器,是否生效?
  4. 注释关于 SearchController 的所有相关代码,项目是否正常运行?
  5. 把 api.php 路由文件的内容全部删除,项目是否正常运行?
2年前 评论
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前

file 可能是这个没打开

2年前 评论
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
leo

试试 composer dump

2年前 评论
李鲤鱼 (楼主) 2年前

你先把报错的那个类用include加上,解决报错问题后再检查哪的问题吧。那个类为没有命名空间的全局类

2年前 评论
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
deatil (作者) 2年前
李鲤鱼 (楼主) 2年前
deatil (作者) 2年前
chowjiawei

namespace 改了吗

2年前 评论
李鲤鱼 (楼主) 2年前
chowjiawei (作者) 2年前
chowjiawei (作者) 2年前
李鲤鱼 (楼主) 2年前
chowjiawei

你确定删除完你的文件 和你的原来可以用的分钟文件都是一样的? 你是怎么确定的 主观确定 还是git reset --hard 还原确定的?

2年前 评论
李鲤鱼 (楼主) 2年前
chowjiawei (作者) 2年前
chowjiawei (作者) 2年前
李鲤鱼 (楼主) 2年前
陈先生

php artisan cache:clear

2年前 评论
李鲤鱼 (楼主) 2年前

删了vendor目录,重新composer update

2年前 评论
李鲤鱼 (楼主) 2年前

检查一下 opcache , 如果开启可以关闭再试 检查一下路由的命名空间
检查一下控制器的命名空间

尝试使用这种方法重新引入

use App\Http\Controllers\UserController;

Route::get('/user', [UserController::class, 'index']);
2年前 评论
李鲤鱼 (楼主) 2年前

还有比较特殊的问题,当控制器中使用 “<?” 短标签的时候,也会报找不到控制器的错误,这个问题让我找了半天 :sob:

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!