分享

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;
————————————————
其实还有其他非设置不正确的问题,按以上设置后也还会有不能加载的情况,经过深入研究后,还有个坑,一般是内核升级或者扩展引入这些问题引起的。

确定以上设置没有问题后:

大致原因如下:

  1. 因为安装多应用模式扩展执行的指令没有生效 php think service:discover 自动注册扩展包的系统服务。
  2. 为什么自动注册拓展包服务失败,详见代码:
  3. vendor/topthink/framework/src/think/console/command/ServiceDiscover.php
  4. 第34行代码$package[‘extra’][‘think’][‘services’]为空,导致生成自动注册服务文件
  5. 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"
);

基本是处理逻辑按上面的方式处理,基本上能解决控制器加载的问题。

 

(根据网络整理)

留言