首頁 >php框架 >ThinkPHP >解決ThinkPHP6提示控制器不存在問題

解決ThinkPHP6提示控制器不存在問題

藏色散人
藏色散人轉載
2021-01-06 16:21:3210090瀏覽

以下由thinkphp教學欄位來介紹ThinkPHP6提示控制器不存在的解決方法,希望對需要的朋友有幫助!

解決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 &#39;hello index&#39;;
    }
}

訪問這個方法: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提示控制器不存在問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除