前言
系統推出後,可能會預到無法預計的錯誤,在我們的測試環境中試了無數次也沒有發生問題,但一旦開放了用戶的CURD我們就會發現多了些ERROR404/ERROR500,你可以去找log file 來查找bug,但太低率了,我們希望是admin 帳號登入後才會看到報錯內容
,這次我們針對的是:內置的debug
,也就是.env
中的APP_DEBUG
同時:可參考上一篇文章:Laravel Debug Bar 只顯示給admin或指定用戶,因為情況極為相似,但需要的用戶卻不一樣,因為上次的是一個插件,而本次則是一個內置功能的關開設定
方法1. 針對IP
這是最簡單的,但卻不是太方便,因為如果你換了IP則每次都要去這個文件修改
在 config/app.php 找到 debug
127.0.0.1 設定為你自己的IP
'debug' => env('APP_DEBUG', $_SERVER['REMOTE_ADDR'] == '127.0.0.1' ? true : false),
方法2. 針對管理員身分做設定
前期準備,簡易會員系統,用Jetstream為例
有關怎麼做管理員的可參考這2篇文章:
非必要: 基於Laravel/Jetstream做一個獨立後台
上面的文章是教你做個簡單的後台,但你都學會用 Jetstream 來做管理員並登入做後台了,那麼Jetstream是全域名通用的,你在網台前台也是有管理員身份的 我們以
1. 把.env 中的設定刪除
把這行刪了,不管是ture還是false
APP_DEBUG = false
2. 在 config/app.php 找到 debug
並設定為 false
'debug' => false,
下面的步驟跟之前那篇文章是一樣的
3. 在 config/app.php 找aliases 加入一行
'aliases' => [
...
'Debugbar' => Barryvdh\Debugbar\Facades\Debugbar::class,
...
],
4. 建立一個 middleware 中間件
這邊比如我改名叫DebugBar
php artisan make:middleware DebugBar
系統會生成一個 app/Http/Middleware/DebugBar.php
5. 打開編輯 app/Http/Middleware/DebugBar.php
下面是我的參考代碼,你可按你自己理想的限制,給指定的人
,甚至是指定的IP
,才提供Debug Bar 顯示
下面的第12行
、第16行
是上一篇教學的代碼,也建議你使用這套插件測試效率
本篇教學的重點設定是第18行
<?php
namespace App\Http\Middleware;
use Auth;
use Closure;
use Config;
class DebugBar {
public function handle($request, Closure $next, $guard = null) {
app('debugbar')->disable(); //預設給所有人是關閉的
//假設管理員的id是1號,也只有一位管理員
if (Auth::check() && Auth::user()->id == 1) {
app('debugbar')->enable(); //如果是管理員將debugbar打開
Config::set('app.debug', true);
}
return $next($request);
}
}
6. 前往 app/Http/Kernel.php
,找到middlewareGroups下的web, 加入剛剛新增的middleware
protected $middlewareGroups = [
'web' => [
......
\App\Http\Middleware\DebugBar::class,
.....
]
後記
其實2個方法都會用到,因為有時候有一些錯誤只有會員身分才會看到的,所以你必須登入其他帳號去做測試,甚至有時候某些bug 是非用戶才看到的,你卻無法登入admin身分去在線debug,這時候方法1
就派上用場