Laravelのデバッグツール《laravel-debugbar》の導入方法
こんにちはYsです。都内でWebエンジニアとして働いています。
Web開発で最近人気のphpフレームワーク「Laravel」
自社でも開発に使用していますが、本当に便利で使いやすいですよね。
そのLaravelでより開発しやすくする「Laravel Debugbar」の導入方法について自分のメモも含めて書いていきます。
公式:GitHub
※Laravel Debugbarとは
Laravelの開発がやり易くなる開発者ツールです。
以下のように、アクセスすると画面下にバーが表示され、フロント部分(リクエストヘッダーやCookie)の情報から実行クエリなどのバックエンド部分も簡単に閲覧できます。
Laravel Debugbarの導入方法
この記事では以下の環境で行なっていきます。すでにLaravelプロジェクトが作成されている前提で話を進めます。
- Docker
- php-fpmコンテナにLaravelプロジェクトを作成済み
Composerを使用してインストールします。
使用コマンドはcomposer require --dev barryvdh/laravel-debugbar
※あくまでデバッグツールなので–devオプションを付けた方がいいです
var/www/dev-web# composer require --dev barryvdh/laravel-debugbar
Using version ^3.2 for barryvdh/laravel-debugbar
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Installing maximebf/debugbar (v1.16.1): Loading from cache
- Installing barryvdh/laravel-debugbar (v3.2.9): Loading from cache
maximebf/debugbar suggests installing kriswallsmith/assetic (The best way to manage assets)
maximebf/debugbar suggests installing predis/predis (Redis storage)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
インストールが成功するとcomposer.jsonに以下の部分に追記されます。
"require-dev": {
+ "barryvdh/laravel-debugbar": "^3.2", // これが追加
"facade/ignition": "^1.4",
"fzaninotto/faker": "^1.9.1",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^8.0"
},
インストールが成功したら、Configファイルを作成します。
vendor/配下に自動で作成してくれます。
/var/www/dev-web# php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
Copied File [/vendor/barryvdh/laravel-debugbar/config/debugbar.php] To [/config/debugbar.php]
Publishing complete.
コンソール画面にも表示されますが以下の部分にファイルが作成されます。
# 以下が設定ファイル
/config/debugbar.php
/vendor/barryvdh/laravel-debugbar/config/debugbar.php
上記のコマンドを実行した後、config/app.phpに以下を追記
バージョンの違いなのか、自動で追加される人もいるみたいですが、追加されていない場合は追加。
'providers' => [
+ Barryvdh\Debugbar\ServiceProvider::class, # providersの中に追加
],
'aliases' => [
+ 'Debugbar' => Barryvdh\Debugbar\Facade::class, # aliasesの中に追加
],
上記の設定が済めば表示されるはずです。自身のローカル環境に接続してみてください。
Laravel Debugbarを開発環境で表示させない方法
上記の設定が完了したら、これを本番環境では表示させない様にしないといけません。
なにせデバッグツールなのでサーバーサイドの情報が丸見えです。
DEBUGBAR_ENABLED
という環境変数が用意されてるので、これのboolean値で表示する(true)、しない(false)が設定可能です。(初期値はnull)
- .env.devlopment(開発環境で使用する.envファイル)はtrue
- .env.production(本番環境で使用する.envファイル)はfalse
DEBUGBAR_ENABLED=true # Debugbar表示
DEBUGBAR_ENABLED=false # Debugbar非表示
もし間違えてComposer Installを行なった場合の対象方
もし、間違えて–devオプション付けずに本番環境のcomposer.jsonを上書きしてしまった!という場合にはcomposer remove {package_name}を使用します。Laravel Debugarを削除する場合には以下。
composer remove barryvdh/laravel-debugbar
/var/www/dev-web# composer remove barryvdh/laravel-debugbar
Dependency "laravel/framework" is also a root requirement, but is not explicitly whitelisted. Ignoring.
Dependency "laravel/framework" is also a root requirement, but is not explicitly whitelisted. Ignoring.
Dependency "laravel/framework" is also a root requirement, but is not explicitly whitelisted. Ignoring.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 6 updates, 2 removals
- Removing maximebf/debugbar (v1.16.1)
- Removing barryvdh/laravel-debugbar (v3.2.9)
- Updating psr/log (1.1.2 => 1.1.3): Downloading (100%)
- Updating symfony/debug (v4.4.4 => v4.4.6): Downloading (100%)
- Updating symfony/finder (v4.4.4 => v4.4.6): Downloading (100%)
- Updating symfony/polyfill-php72 (v1.14.0 => v1.15.0): Downloading (100%)
- Updating symfony/polyfill-mbstring (v1.14.0 => v1.15.0): Downloading (100%)
- Updating symfony/var-dumper (v4.4.4 => v4.4.6): Downloading (100%)
Writing lock file
Generating optimized autoload files/* Your code... */