解決方法:找Thinkphp3.2.3手冊,內容如下!
和PHP默認的異常處理不同,ThinkPHP拋出的不是單純的錯誤信息,而是一個人性化的錯誤頁面,如下圖所示:
只有在調試模式下面才能顯示具體的錯誤信息,如果在部署模式下面,你可能看到的是一個簡單的提示文字,例如:
一旦關閉調試模式,發生錯誤後不會提示具體的錯誤信息,如果你仍然希望看到具體的錯誤信息,那麼可以如下設置:
ThinkPHP/Conf/convention.php裡設置
'SHOW_ERROR_MSG' => true, // 顯示錯誤信息
如果你試圖在部署模式下訪問一個不存在的模塊或者操作,會發送404錯誤。
調試模式下面一旦系統發生嚴重錯誤會自動拋出異常,也可以用ThinkPHP內置的E方法手動拋出異常。
E('新增失敗');
也可以支持異常代碼(默認為0),例如:
E('信息錄入錯誤',25);
同樣也可以使用throw 關鍵字來拋出異常,下面的寫法是等效的:
throw new \Think\Exception('新增失敗');
我們可以自定義異常頁面的顯示,系統內置的異常模板在系統目錄的Thinkphp/Tpl/think_exception.tpl
,可以通過修改系統模板來修改異常頁面的顯示。
也通過設置TMPL_EXCEPTION_FILE配置參數來修改系統默認的異常模板文件, 例如:
ThinkPHP/Conf/convention.php裡設置
'TMPL_EXCEPTION_FILE' => APP_PATH.'/Public/exception.tpl'
異常模板中可以使用的異常變量有:
$e['file']異常文件名
$e['line'] 異常發生的文件行數
$e['message'] 異常信息
$e['trace'] 異常的詳細Trace信息
因為異常模板使用的是原生PHP代碼,所以還可以支持任何的PHP方法和系統變量使用。
拋出異常後通常會顯示具體的錯誤信息,如果不想讓用戶看到具體的錯誤信息,可以設置關閉錯誤信息的顯示並設置統一的錯誤提示信息,例如:
ThinkPHP/Conf/convention.php裡設置
'SHOW_ERROR_MSG' => false,
'ERROR_MESSAGE' => '發生錯誤!'
設置之後,所有的異常頁面只會顯示“發生錯誤!”這樣的提示信息,但是日志文件中仍然可以查看具體的錯誤信息。
系統的默認情況下,調試模式是開啟錯誤信息顯示的,部署模式則關閉錯誤信息顯示。
另外一種方式是配置ERROR_PAGE參數,把所有異常和錯誤都指向一個統一頁面,從而避免讓用戶看到異常信息,通常在部署模式下面使用。ERROR_PAGE參數必須是一個完整的URL地址,例如:
ThinkPHP/Conf/convention.php裡設置
'ERROR_PAGE' =>'/Public/error.html' 系統默認為空
如果不在當前域名,還可以指定域名:
'ERROR_PAGE' =>'http://www.myDomain.com/Public/error.html'
注意ERROR_PAGE所指向的頁面不能再使用異常的模板變量了。