[PHP] xDebug設定する方法


Study / PHP    作成日付 : 2020/01/18 03:00:00   修正日付 : 2020/01/18 03:00:00

こんにちは。明月です。


前述でPHPでデバッグする方法に関して説明したことがあります。

link - [PHP] データ確認関数(var_dump, debug_zval_dump, print_r)


普通、PHPで開発する時にvar_dumpをよく使いますが、var_dumpやエラーが発生する時などのメッセージをもっと正確に分析してくれるライブラリのxDebugがあります。

これからxDebugのライブラリをインストールしましょう。


まず、phpinfoの関数でPHPの環境設定に関して確認しましょう。


上のPHP環境設定のページをソースビューにしてソース全てをセレクトせいてコピーしましょう。(Ctrl + c)


その後、下記のURLに接続してパッケージ検査をしましょう。

ダウンロードパッケージ検査 : https://xdebug.org/wizard.php


その後でパッケージ情報が表示されますが、ダウンロードURLでxdebugライブラリがリンクされ、それを選択してダウンロードしましょう。


(筆者の考えはPHP環境設定情報でPHPバージョンとタイプ(thread safeかthread unsafeか)を正確に分析するようにソースビューのデータをコピーペしたと思います。)

ダウンロードしたファイルをPHPフォルダのextフォルダにコピーしましょう。


そしてphp.iniファイルを修正しましょう。

zend_extension = d:\apachephp\php\ext\php_xdebug-2.7.2-7.3-vc15-x86_64.dll

上のダウンロードしたページの3番をみればiniファイルの一番下に入れてください」と書いているのでコピーペすればよいです。


そしてサーバを再起動してxDebugセッションがあることを確認できます。


xDebugがPHP開発でどのように使うか確認しましょう。

<?php
  class Test {
    public function print(){
      // Testクラスでメンバー変数dataは宣言してない。
      echo $this->data;
    }
  }
  $obj = new Test();
?>
<!DOCTYPE html>
<html>
<head><title>title</title></head>
<body>
  <?=$obj->print()?>
</body>
</html>

上の例では$obj変数にTestクラスを宣言してbodyの領域でprint関数を呼出しています。

print関数ではTestクラスのdata変数の値を返却していますが、dataの変数は宣言してないです。エラーになるソースですね。

xDebugを設定する前には下記のイメージみたいに出力します。


それがxDebugを設定する後は下記のイメージみたいに出力します。


call stack表示でどこでエラーが発生したかを追跡ができます。前よりもっと詳しい情報が出るので開発する時に楽になると思います。


実は初めxDebugを設定する理由はEclipseでデバック機能を付いて使おうと思いましたがEclipse側でエラーが発生しますね。


原因はEclipseのバグだといいますが、私の場合は関連資料を調べても解決が出来ないです。もし知ってる方がいらっしゃったらお知らせてください。


link - https://xdebug.org/

link - https://wiki.eclipse.org/Debugging_using_XDebug

link - https://yard.tistory.com/entry/Eclipse-PHP-Debug

最新投稿