
ThinkPHP6.0控制器不存在:app\index\controller
报错如图:
网上的解决办法:
1、报错原因:控制器的Index类没有找到,出现原因:
(1)、多应用没有配置
(2)、命名空间不对
(3)、入口文件默认运行的用户请求没有配置
(4)、备注(多应用):需要安装多应用模式扩展think-multi-app
命令行:composer require topthink/think-multi-app
2、解决办法:
在config/app.php中,将 ‘auto_multi_app’ => flase, 改为true;
————————————————
其实还有其他非设置不正确的问题,按以上设置后也还会有不能加载的情况,经过深入研究后,还有个坑,一般是内核升级或者扩展引入这些问题引起的。
确定以上设置没有问题后:
大致原因如下:
- 因为安装多应用模式扩展执行的指令没有生效 php think service:discover 自动注册扩展包的系统服务。
- 为什么自动注册拓展包服务失败,详见代码:
- vendor/topthink/framework/src/think/console/command/ServiceDiscover.php
- 第34行代码$package[‘extra’][‘think’][‘services’]为空,导致生成自动注册服务文件
- services.php 中没有注册的代码
解决方法:
1、找到Vendor/Composer/installed.json文件,搜索services子项找到所有的services的值(不一定就是下面三个),整理出来就是下面这几个:
"think\\captcha\\CaptchaService", "think\\app\\Service", "think\\trace\\Service"
2、找到Vendor/services.php可以看到第4行是:
return array ( );
3、将第1步在installed.json找到的service值复制到services.php的数组里如下:
return array ( "think\\captcha\\CaptchaService", "think\\app\\Service", "think\\trace\\Service" );
基本是处理逻辑按上面的方式处理,基本上能解决控制器加载的问题。
(根据网络整理)