ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)
攔截無效請求 控制器或方法不存在
- 一、默認無效請求
- 二、顯示具體錯誤信息
- 方法1.配置`config/app.php`
- 方法2. 配置`.env`環境變量
- 三、處理錯誤
- 1. 方法不存在
- 2. 控制器不存在
一、默認無效請求
當訪問不存在的控制器或方法時,默認會顯示如下頁面:
二、顯示具體錯誤信息
方法1.配置config/app.php
如果想看具體的錯誤信息可以配置config/app.php
'show_error_msg' => true配置后顯示具體錯誤信息:
方法2. 配置.env環境變量
將方法1的配置還原;然后看下項目根目錄有個文件.example.env,這是官方提供的env示例文件,可以將它復制一份,然后重命名為.env文件,默認文件內容如下:
APP_DEBUG = true[APP] DEFAULT_TIMEZONE = Asia/Shanghai[DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password HOSTPORT = 3306 CHARSET = utf8 DEBUG = true[LANG] default_lang = zh-cn可以看到第一行APP_DEBUG = true默認開啟了debug模式,這時候再訪問剛才的地址,可以看到非常詳細的報錯,
注意:這種模式是開發階段才能打開的,線上模式是不能打開的,因為會暴露詳細的文件和信息流程,非常不安全。
線上模式,我們設置APP_DEBUG = false,這時候又會回到剛才的錯誤頁面:
三、處理錯誤
1. 方法不存在
在BaseController控制器中定義__call方法,如果訪問的控制器繼承了BaseController控制器,而方法找不到會進入這個__call方法,需要注意的是訪問的方法可能是API格式的json數據,也可能是返回頁面,如果是api數據:
public function __call($name, $arguments) {// 如果是API模塊,需要輸出API的數據格式(一般是json)// 如果是模板引擎的方式,需要輸出自定義錯誤頁面$result = ['status' => 0,'message' => '找不到該方法','result' => null];return json($result, 400); }當我們訪問不存在的方法時:
下圖顯示格式化的json數據格式,是因為瀏覽器安裝了JSONView插件
2. 控制器不存在
當訪問一個不存在的控制器時,也是顯示如下報錯:
解決方法,在app\controller目錄下新建一個Error控制器(名字固定為Error):
這時再訪問不存在的控制器:
??重磅推薦:免費商用電商系統
😏想白嫖整個電商系統用來商用?
🤑想有自己的商城實現財富自由?
🤓想學習最佳實踐提升自己技術?
快來進入🚀 傳送門 🚀,開源免費、完整示例帶你快速入門,輕松二開,走上人生巔峰!👨?🎓
總結
以上是生活随笔為你收集整理的ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python ks检验_python –
- 下一篇: sklearn tfidf求余弦相似度_