Laravel之加密解密/日誌/異常處理及自定義錯誤
一.加密解密
1.加密
Crypt::encrypt($request->secret)
2.解密
try {
$decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
二.日誌
1.配置文件config/app.php 中的debug 配置選項控制瀏覽器顯示的錯誤詳情數量。默認情況下,該配置選項被設置在.env 文件中的環境變量APP_DEBUG 。對本地開發而言,你應該設置環境變量APP_DEBUG 值為true 。在生產環境,該值應該被設置為false 。
2.日誌模式
Laravel 支持日誌方法single , daily , syslog 和errorlog 。例如,如果你想要日誌文件按日生成而不是生成單個文件,應該在配置文件config/app.php 中設置log 值如下:
‘log‘ => ‘daily‘
三.異常處理/自定義錯誤頁面
1.異常處理器在App/Exceptions/Handler.php
2.report 方法
report 方法用於記錄異常並將其發送給外部服務如Bugsnag 。默認情況下, report 方法只是將異常傳遞給異常被記錄的基類,你可以隨心所欲的記錄異常。
例如,如果你需要以不同方式報告不同類型的異常,可使用PHP 的instanceof 比較操作符:
/** * 報告或記錄異常 * * This is a great spot to send exceptions to Sentry, Bugsnag, etc. * * @param \Exception $e * @return void */ public function report(Exception $e){ if ($e instanceof CustomException) { // } return parent::report($e); }
異常處理器的$dontReport 屬性包含一個不會被記錄的異常類型數組,默認情況下,404 錯誤異常不會被寫到日誌文件,如果需要的話你可以添加其他異常類型到這個數組。
3.render方法
render 方法負責將給定異常轉化為發送給瀏覽器的HTTP 響應,默認情況下,異常被傳遞給為你生成響應的基類。然而,你可以隨心所欲地檢查異常類型或者返回自定義響應:
/** * 將異常渲染到 HTTP 響應中 * * @param \Illuminate\Http\Request $request * @param \Exception $e * @return \Illuminate\Http\Response */ public function render($request, Exception $e){ if ($e instanceof CustomException) { return response()->view(‘errors.custom‘, [], 500); } // 自定義一個token錯誤的異常 if ($e instanceof TokenMismatchException) { return back()->withErrors(‘token錯誤,請重新提交‘); } return parent::render($request, $e); }
4.應用中生成異常
abort(404);
abort(403, ‘Unauthorized action.‘);
5.自定義 HTTP 錯誤頁面
Laravel 使得返回多種HTTP 狀態碼的錯誤頁面變得簡單,例如,如果你想要自定義 404 錯誤頁面,創建一個
resources/views/errors/404.blade.php 文件,給文件將會渲染程序生成的所有 404 錯誤。 改目錄下的視圖命名應該和相應的 HTTP 狀態碼相匹配。
Laravel之加密解密/日誌/異常處理及自定義錯誤