다음 튜토리얼 칼럼인 thinkphp에서는 ThinkPHP6에서 컨트롤러가 없다는 메시지가 나타나는 문제에 대한 해결책을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
ThinkPHP 6에서는 제어 컨트롤러가 존재하지 않는다는 메시지가 표시됩니다
thinkphp 6은 기본적으로 단일 애플리케이션 모드로 설정됩니다. 여러 애플리케이션이 필요한 경우 다중 애플리케이션 모드 확장을 설치해야 합니다think-multi-app
.
composer require topthink/think-multi-app
그런 다음 프레임워크와 함께 제공되는 appcontroller 디렉터리를 삭제하고 필요한 애플리케이션 디렉터리를 만듭니다.
예: appindexcontrollerIndex.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
결과 프롬프트: 컨트롤러가 존재하지 않습니다. appcontrollerindex
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의 서비스 값을 Vendor/services 배열에 복사합니다.
위 내용은 ThinkPHP6에서 컨트롤러가 존재하지 않는다는 메시지가 표시되는 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!