下面thinkphp框架教程欄目將給大家介紹關(guān)于如何開啟THINKPHP 調(diào)試模式及異常處理,希望對需要的朋友有所幫助!
調(diào)試模式
開啟調(diào)試模式很簡單,只需要在入口文件中增加一行常量定義代碼:
<?php // 開啟調(diào)試模式 define('APP_DEBUG', true); // 定義應(yīng)用目錄 define('APP_PATH', './Application/'); // 加載框架入口文件 require './ThinkPHP/ThinkPHP.php';
測試時,開啟DEBUG調(diào)試模式, 開發(fā)模式下,自動生成緩存文件,測試時自動調(diào)用緩存的文件,會出錯
在完成開發(fā)階段部署到生產(chǎn)環(huán)境后,只需要關(guān)閉調(diào)試模式或者刪除調(diào)試模式定義代碼即可切換到部署模式。
<?php // 關(guān)閉調(diào)試模式 define('APP_DEBUG', false); // 定義應(yīng)用目錄 define('APP_PATH', './Application/'); // 加載框架入口文件 require './ThinkPHP/ThinkPHP.php';
調(diào)試模式的優(yōu)勢在于:
- 開啟日志記錄,任何錯誤信息和調(diào)試信息都會詳細(xì)記錄,便于調(diào)試;
- 關(guān)閉模板緩存,模板修改可以即時生效;
- 記錄SQL日志,方便分析SQL;
- 關(guān)閉字段緩存,數(shù)據(jù)表字段修改不受緩存影響;
- 嚴(yán)格檢查文件大小寫(即使是Windows平臺),幫助你提前發(fā)現(xiàn)Linux部署可能導(dǎo)致的隱患問題;
- 通過頁面Trace功能更好的調(diào)試和發(fā)現(xiàn)錯誤;
一旦關(guān)閉調(diào)試模式,發(fā)生錯誤后不會提示具體的錯誤信息,如果你仍然希望看到具體的錯誤信息,那么可以如下設(shè)置:
'SHOW_ERROR_MSG' => true, // 顯示錯誤信息
異常處理
調(diào)試模式下面一旦系統(tǒng)發(fā)生嚴(yán)重錯誤會自動拋出異常,也可以用ThinkPHP內(nèi)置的E方法手動拋出異常。
E('新增失敗');
也可以支持異常代碼(默認(rèn)為0),例如:
E('信息錄入錯誤',25);
通過設(shè)置TMPL_EXCEPTION_FILE配置參數(shù)來修改系統(tǒng)默認(rèn)的異常模板文件, 例如:
'TMPL_EXCEPTION_FILE' => APP_PATH.'/Public/exception.tpl'
異常模板中可以使用的異常變量有:
$e['file']異常文件名 $e['line'] 異常發(fā)生的文件行數(shù) $e['message'] 異常信息 $e['trace'] 異常的詳細(xì)Trace信息
拋出異常后通常會顯示具體的錯誤信息,如果不想讓用戶看到具體的錯誤信息,可以設(shè)置關(guān)閉錯誤信息的顯示并設(shè)置統(tǒng)一的錯誤提示信息,例如:
'SHOW_ERROR_MSG' => false, 'ERROR_MESSAGE' => '發(fā)生錯誤
配置ERROR_PAGE參數(shù),把所有異常和錯誤都指向一個統(tǒng)一頁面,從而避免讓用戶看到異常信息,通常在部署模式下面使用。ERROR_PAGE參數(shù)必須是一個完整的URL地址,例如:
'ERROR_PAGE' =>'/Public/error.html'
如果不在當(dāng)前域名,還可以指定域名:
'ERROR_PAGE' =>'http://www.myDomain.com/Public/error.html'
注意ERROR_PAGE所指向的頁面不能再使用異常的模板變量了。
日志記錄
默認(rèn)情況下只是在調(diào)試模式記錄日志,要在部署模式開啟日志記錄,必須在配置中開啟LOG_RECORD
參數(shù),以及可以在應(yīng)用配置文件中配置需要記錄的日志級別,例如:
'LOG_RECORD' => true, // 開啟日志記錄 'LOG_LEVEL' =>'EMERG,ALERT,CRIT,ERR', // 只記錄EMERG ALERT CRIT ERR 錯誤
日志級別
ThinkPHP對系統(tǒng)的日志按照級別來分類,包括:
- EMERG 嚴(yán)重錯誤,導(dǎo)致系統(tǒng)崩潰無法使用
- ALERT 警戒性錯誤, 必須被立即修改的錯誤
- CRIT 臨界值錯誤, 超過臨界值的錯誤
- ERR 一般性錯誤
- WARN 警告性錯誤, 需要發(fā)出警告的錯誤
- NOTICE 通知,程序可以運(yùn)行但是還不夠完美的錯誤
- INFO 信息,程序輸出信息
- DEBUG 調(diào)試,用于調(diào)試信息
- SQL SQL語句,該級別只在調(diào)試模式開啟時有效
記錄方式
日志的記錄方式默認(rèn)是文件方式,可以通過驅(qū)動的方式來擴(kuò)展支持