Heim  >  Artikel  >  PHP-Framework  >  Lösen Sie das Problem, dass ThinkPHP6 meldet, dass der Controller nicht vorhanden ist

Lösen Sie das Problem, dass ThinkPHP6 meldet, dass der Controller nicht vorhanden ist

藏色散人
藏色散人nach vorne
2021-01-06 16:21:329930Durchsuche

Die folgende Tutorial-Kolumne von thinkphp stellt Ihnen die Lösung für das Problem vor, dass ThinkPHP6 anzeigt, dass der Controller nicht existiert. Ich hoffe, dass es Freunden in Not hilfreich sein wird!

Lösen Sie das Problem, dass ThinkPHP6 meldet, dass der Controller nicht vorhanden ist

ThinkPHP 6 meldet, dass der Steuerungscontroller nicht vorhanden ist.


ThinkPHP 6 verwendet standardmäßig den Einzelanwendungsmodus. Wenn mehrere Anwendungen benötigt werden, müssen Erweiterungen für den Mehrfachanwendungsmodus installiert werden. think-multi-app

composer require topthink/think-multi-app
Dann löschen Sie das Appcontroller-Verzeichnis, das mit dem Framework geliefert wird, und erstellen Sie das benötigte Anwendungsverzeichnis.


Zum Beispiel: appindexcontrollerIndex.php

<?php
namespace app\index\controller;use app\BaseController;class Index extends BaseController
{    public function index()
    {        return 'hello index';
    }
}
Besuchen Sie diese Methode: http://www.study_tp6.com/public/index .php/ index/index/index


Ergebnisaufforderung:

Der Controller existiert nicht. appcontrollerindex


Finden Sie den Grund:

1. Die Think-Multi-App-Erweiterung wurde gemäß der offiziellen Dokumentation installiert Es wurde die Meldung angezeigt, dass die Installation erfolgreich war.

2. Der Namensraum des Controllers ist ebenfalls korrekt geschrieben.

3. Der Zugriffspfad ist derselbe wie der Verzeichnisname, der Controller und der Methodenname, und die Zugriffsadresse ist korrekt.

4. Im Internet heißt es, dass in der Konfigurationsdatei config/app.php „auto_multi_app“ => flase in „true“ geändert werden soll.

Aber die Version, die ich verwende, ist ThinkPHP 6.0.4, und das ist nicht der Fall Ich habe versucht, Parameter hinzuzufügen, aber es hat nicht funktioniert.

5. Stimmt etwas mit dem heruntergeladenen Framework nicht? Ich habe das Framework erneut heruntergeladen und die Multianwendungserweiterung neu installiert, aber es hat immer noch nicht funktioniert.


Lösung:

Vielen Dank an [ikgade], der die offiziellen Kommentare geteilt, es ausprobiert und diese Falle gelöst hat.

Dies ist die Idee und der Plan des Autors:

为什么提示 “控制器不存在: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
Kopieren Sie den Servicewert in Vendor/Composer/Installed.json in das Array von Vendor/Services.


Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, dass ThinkPHP6 meldet, dass der Controller nicht vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen