2019/11/28
PHPの定番デバッグツールといえば「Xdebug」。
PHPのエクステンションで、「var_dumpの整形」「ステップ実行」といったデバッグの機能を提供します。
今回は、Laravelに「Xdebug」を入れて、Laravelのエラー表示をXdebugのエラー表示に変えてみます。
手順
1.Xdebugをダウンロード
公式サイトにアクセス
Xdebugの公式サイトからダウンロードします。
Xdebugのバージョンを選定する
XdebugはApachやPHPのバージョンに強く依存します。
画面下にはたくさんのバージョンが表示されますが、この中から選ぶのは大変なので、Xdebugが準備してくれているツールを使います。
「custom installation instructions」をクリック。
phpinfo()で表示される内容を全選択してテキストエリアにペーストします。(※本当はHTMLのソースをコピペ)
「解析」ボタンをクリックすると以下のように解析結果が表示されます。
これをダウンロードします。
設置
ダウンロードしたファイルは、C:\xampp\php\ext
フォルダ(※PHPの拡張モジュール置き場)に置きます。
2.php.iniの設定
php.iniにXdebugの拡張モジュールファイルを指定してあげます。
コマンドラインでphp.iniの場所を確認。
php -r "echo phpinfo();" | grep "php.ini"
実行結果は以下のように表示されます。
php.iniを開いて末尾にXdebugの拡張モジュールファイルを指定します。
:
# "php_xdebug-2.8.0-7.2-vc15.dll" はダウンロードしたファイル名です
zend_extension = C:\xampp\php\ext\php_xdebug-2.8.0-7.2-vc15.dll
3.Apacheの再起動
WEBサーバーを再起動するとphp.iniの変更が反映されます。
XAMPPの場合
4.phpinfo()で確認
php -r "echo phpinfo();" | grep "xdebug"
実行結果は以下のように表示されます。
5.Xdebugを実行してみる
routes.php
Route::get('xdebug','XdebugController@getIndex');
XdebugController.php
:
public function getIndex()
{
# エラー表示を有効化
ini_set('display_errors', 1);
# Laravelのエラーハンドラーをオーバーライドして、デフォルト値に戻す
restore_error_handler();
return view('xdebug.index');
}
:
index.blade.php
<?php
// エラー表示させる
echo $test;
実行結果
スタックトレースの履歴と、メモリーの使用量が確認できます。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。