デバッガ(Xdebug)の導入

2019/11/28

PHPの定番デバッグツールといえば「Xdebug」。

PHPのエクステンションで、「var_dumpの整形」「ステップ実行」といったデバッグの機能を提供します。

今回は、Laravelに「Xdebug」を入れて、Laravelのエラー表示をXdebugのエラー表示に変えてみます。

 

手順

 

1.Xdebugをダウンロード

公式サイトにアクセス

Xdebugの公式サイトからダウンロードします。

Xdebugダウンロード(公式)

前のXAMPPではXdebugが同梱されていました。しかし、現在最新のXAMPPには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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識