php显示控制器不存在,ThinkPHP6提示控制器不存在怎么办

ThinkPHP6提示控制器不存在怎么办

发布时间:2021-01-07 10:03:49

来源:亿速云

阅读:98

作者:小新

这篇文章主要介绍了ThinkPHP6提示控制器不存在怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

ThinkPHP 6 提示控制控制器不存在

thinkphp 6 默认是单应用模式,需要多应用时,就要安装多应用模式扩展think-multi-app。composer require topthink/think-multi-app

然后删除框架自带的app\controller目录,创建自己需要的应用目录.

例如:\app\index\controller\Index.php<?php

namespace app\index\controller;use app\BaseController;class Index extends BaseController

{    public function index()

{        return 'hello index';

}

}

访问这个方法:http://www.study_tp6.com/public/index.php/index/index/index

结果提示:控制器不存在 app\controller\index

查找原因:

1、按照官方文档安装了think-multi-app扩展,提示安装成功。

2、控制器的命名空间也没写错。

3、访问路径与目录名、控制器、方法名一样,访问地址是没错的。

4、网上有说,在配置文件config/app.php中,将 'auto_multi_app' => flase, 改为true,

但我使用的版本是ThinkPHP 6.0.4,配置文件中并没有这个参数,试了试,加上也没用。

5、难道下载的框架有问题?重新下载框架,重新安装多应用扩展,结果还是不行。

解决办法:

感谢 【ikgade】在官方的评论分享,试了试,解决了这个坑。

这是作者的思路和方案:为什么提示 “控制器不存在:app\controller\Admin”?

因为安装多应用模式扩展执行的指令没有生效 php think service:discover 自动注册扩展包的系统服务。

为什么自动注册拓展包服务失败,详见代码:

vendor/topthink/framework/src/think/console/command/ServiceDiscover.php

第34行代码$package['extra']['think']['services']为空,导致生成自动注册服务文件

services.php 中没有注册的代码。

天坑!

怎么解决呢?

首先找到你加入的拓展,在这里:

vendor/composer/installed.json

然后把所有的$package['extra']['think']['services']复制粘贴到services中,或者修改以下文件的代码:

vendor/topthink/framework/src/think/console/command/ServiceDiscover.php

复制vendor/composer/installed.json中的services值到vender/services的数组中。

感谢你能够认真阅读完这篇文章,希望小编分享的“ThinkPHP6提示控制器不存在怎么办”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值