laravel-debugbarの導入

デフォルトでもSymfonyのデバッカーみたいなものがありますがあんまり詳細な情報が出ないので、Laravel専用のデバッカーを入れてみます。
(デバッカーでいうとCake3はデバッカーだけは強力だったと思う。)
github: /barryvdh/laravel-debugbar
packagist: /barryvdh/laravel-debugbar

Composerでインストール

php composer.phar require barryvdh/laravel-debugbar --dev

インストール時の最後に最適化までやってくる。

composer install

これで入ったっぽい。composer.jsonとcomposer.lockにいろいろ追加されます。
あれ?Laravel5.4はデフォルトでVenderにいるのかな?

facadeで使えるようにする

config/app.phpのproviderとalias部分に以下をそれぞれ指定。
ここでは5.4での設定を書いてますが、5.3以下での設定をやると500エラーになりますのでご注意。

// .env
...
APP_DEBUG=true
APP_URL=http://example.com ←自分の環境に合わせる
...
// config/app.php
....
'providers' => [
....
+    Barryvdh\Debugbar\ServiceProvider::class,
....
'aliases' => [
....
+    'Debugbar' => Barryvdh\Debugbar\Facade::class,
....

configファイルを生成してデバックモードにする

以下artisanを実行します。

php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
Copied File [/vendor/barryvdh/laravel-debugbar/config/debugbar.php] To [/config/debugbar.php]
Publishing complete.

もしここで複数の選択肢が出てきたら全部publishしてよいです。

Which provider or tag's files would you like to publish?:
  [0 ] Publish files from all providers and tags listed below
  [1 ] Provider: Barryvdh\Debugbar\ServiceProvider
  [2 ] Provider: BeyondCode\DumpServer\DumpServerServiceProvider

全部やるときは、

$ php artisan vendor:publish --all

生成したconfig/debugbar.phpを修正します。

// デフォルト (.envのAPP_DEBUG変数に依存)
'enabled' => null,

// 表示
'enabled' => true,

// 非表示
'enabled' => false,

キャッシュ関連またはログの書き込み関連でパーミッションエラーが出ることがあります。

Debugbar exception: mkdir(): Permission denied

なので、

chmod -R 777 storage
chmod -R 777 storage/logs
chmod 666 storage/logs/laravel.log

とか

chmod 666 approot/bootstrap/cache/packages.php

ここまでの設定でデバッカーが出てこなかったら、ちょっと変です。

ソースがあるのに出ない

htmlのソースみたらデバッカーが出力されているのに表面には出ない場合があってjsとcssをよんでいないっぽいんです。
環境によって以下2つのファイルが読み込まれてない模様。

/_debugbar/assets/javascript?v=1523243313
/_debugbar/assets/stylesheets?v=1523243313

だいたいの原因はpublic/.htaccessがちゃんと設定されていないというケースが多いような気がします。デバッカーも他の機能と同様にLaravelでルーティングされているので、.htaccessが設定されていないとダメです。
もう一つのケースとしてデバッカーのキャッシュが生成されていない系の話です。storage/debugbar以下の書き込み権限とかそういう話かもです。

  • public内の.htaccessの中でrewriteの設定がちゃんとしてない。
  • storage/debugbarに書き込み権限がない。
  • jQueryが読み込まれていない。(DebugbarはjQueryで動いてます。)

開発中のデバッグコード

var_dump()みたいなやつ

var_dump()のかわりに使うとよさそう。

\Debugbar::info($foo);

なんかバックスラッシュを頭につけないといけないみたいです。
詳しい使い方

ベンチマーク

use Debugbar;

// ベンチマーク開始
Debugbar::startMeasure('key','ファイルアップロードにかかった時間');

// ベンチマーク部分

// ベンチマーク終了(デバッグバーのTimelineに実行時間が表示される)
Debugbar::stopMeasure('key');

開始と終了で同じ’key’を指定した部分の実行時間が計測される。

その他のデバック方法

info以外にも以下のような使い方があります。

\Debugbar::emergency('emergency');
\Debugbar::alert('alert');
\Debugbar::critical('critical');
\Debugbar::error('error');
\Debugbar::warning('warning');
\Debugbar::notice('notice');
\Debugbar::info('info');
\Debugbar::debug('debug');
\Debugbar::log('log');

Debugbarとは関係ないけど、vardump()とdie()を合わせたみたいなdd()という関数がLaravelにはあるので開発中は非常に便利です。

dd("debug");

http://qiita.com/sutara79/items/9fd442a81001842aeba1

Last update: 2019.03.22 (金)