はじめに#
PhpStorm には多くの機能があり、デバッグ機能も理解しづらいことがあります。
ここでは、PhpStorm の設定と Xdebug デバッグの手順を記録します。
参考リンク
準備作業#
- PHP に Xdebug 拡張をインストールする(バージョン 2.x と 3.x では設定が異なります)
- ブラウザに Xdebug プラグインをインストールする(Chrome を例に挙げます。インターネット接続が必要です) Xdebug Helper
- PhpStorm(現在のバージョンは 2022.1.4 で、個人の環境には大きな影響はありません)
php.ini の Xdebug 設定#
;;;id1 Xdebug 2.x
[xdebug]
zend_extension="<xdebug拡張のパス>"
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port="<Xdebugが接続するポート(デフォルトは9000)>"
;;;
;;;id1 Xdebug 3.x
[xdebug]
zend_extension="<xdebug拡張のパス>"
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port="<Xdebugが接続するポート(デフォルトは9003)>"
;;;
私の開発環境では、Xdebug 2.x を使用しています(共有フォルダ、ローカルディレクトリを仮想マシンにマッピングする例)
remote_host=192.168.0.*(個人 PC のローカル IP アドレス)
remote_port=19000(ポートはデフォルトで 9000 ですが、衝突しなければカスタムポートを設定できます)
追加のパラメータの説明
-
Xdebug を有効にすると、デフォルトで overload_var_dump=2 になりますが、私は var_dump () のデフォルトの出力に慣れているため、0 に設定して無効にすることができます。
xdebug.overload_var_dump=0 -
PhpStorm は Just-In-Time(JIT)モードで Xdebug を使用できます。デフォルトでは xdebug.remote_mode=req になっていますが、通常は設定する必要はありません。
xdebug.remote_mode=jit -
DBGP プロキシを介してマルチユーザーデバッグを行うための設定
公式ウェブサイトの説明に従って設定します。
xdebug.idekey を設定し、選択した値を指定します。この値は、IDE を Xdebug プロキシサーバーに登録するために使用されます。
xdebug.remote_host を dbgp_proxy_hostname_or_ip に設定します
(具体的な使用方法は試していないため、マルチユーザーデバッグは使用しないため、以前のチュートリアルを見て一般的なデバッグではこれを設定する必要はありません)
PhpStorm の設定#
PhpStorm は Xdebug と Zend Debugger の 2 つの最も人気のあるツールを使用してデバッグをサポートしていますが、ここでは Xdebug の使用方法を説明します。
PhpStorm を使用すると、メインメニューの実行 / デバッグ構成または使用しない方法で PHP デバッグセッションを開始できます。後者の方法はゼロ構成デバッグとも呼ばれます。
PhpStorm で Xdebug を設定する#
まず、メインメニューのファイル / 設定 | PHP > デバッグ構成で
Xdebug の設定で、デバッグポート番号を php.ini と一致させる必要があります。複数のポートをカンマで区切って指定することもできます(例:9000,9003,19000)
その他の設定はデフォルトのままで構いません
ゼロ構成デバッグ#
ゼロ構成デバッグでは、デバッグ構成を作成する必要はありません。
代わりに、手動で PHP アプリケーションの起動ページをブラウザで開き、ブラウザからデバッグエンジンをアクティブにし、同時に PhpStorm が受信デバッガ接続をリッスンします。
ブラウザでデバッグエンジンをアクティブにする#
PhpStorm が受信デバッガ接続をリッスンする#
デバッグセッションを開始する#
ブラウザでページを再読み込みして PhpStorm に戻り、ダイアログが表示されたら「はい」を選択します(図 1)
この時点で自動的にサーバー構成が作成され、メインメニューのファイル / 設定 | PHP > サーバーで確認できます(図 2)
ページを再読み込みすると、まだデバッグモードに入っていないことがわかります
構成を確認すると、マッピングパスが public ディレクトリのみになっていることがわかりました。ルートディレクトリのマッピングを手動で追加した後、ブレークポイントを設定し、再度ページを読み込むと、デバッグセッションに入ることができました(図 3)
図 1
図 2
図 3
テンプレートを使用して構成を作成する#
サーバー構成を手動で作成する#
上記でゼロ構成デバッグについて説明しましたが、自動的にサーバー構成が作成される場合は作成する必要はありません。作成されていない場合は、手動で作成します。
(メインメニューのファイル / 設定 | PHP > サーバー)
私の環境は Linux の仮想マシン上にあるため、マッピングが必要です
- ホストにプロジェクトの IP またはドメインを入力します(テストにはマッピングが必要です)
- ポート番号(プロジェクトのポート番号)
- デバッガの選択(xdebug)
PHP ウェブページデバッグ構成を使用してデバッグする(PHP web page)#
メインメニューから実行 / 構成の編集を選択します。
左上の + をクリックして PHP ウェブページ(PHP web page)のテンプレートを選択し、設定を開始します
設定が完了したら、右上のデバッグボタンをクリックします
ブラウザが自動的に開き、デバッグが開始されます
- 設定したサーバーを選択します
- 開始ページは個人の設定によりますが、通常はデフォルトの / です
- ブラウザを選択します(個人の設定によります)
PHP リモートデバッグ構成を使用してデバッグする(PHP Remote Debug)#
メインメニューから実行 / 構成の編集を選択します。
左上の + をクリックして PHP リモートデバッグ(PHP Remote Debug)のテンプレートを選択し、設定を開始します
設定が完了したら、右上のデバッグボタンをクリックし、デバッグセッションを開始します
ウェブサイトを手動で開く必要があり、ブラウザの xdebug プラグインを設定する必要があります
xdebug アイコンを右クリックし、ドロップダウンメニューを展開し、「オプション」をクリックし、IDE キーを「phpstorm」に設定します
これでデバッグを開始できます
- 設定したサーバーを選択します
- IDE キー(セッション ID)をカスタムで入力します。通常は PHPSTORM と入力します。これはブラウザの xdebug プラグインの IDE キーと対応する必要があります
設定ウィンドウ
ブラウザの xdebug プラグインのオプション設定
まとめ#
- ゼロ構成デバッグ
右上のデバッグのトグルスイッチをオンにするだけで、ブラウザプラグイン xdebug を有効にすることで、ページを再読み込むとデバッグセッションに入ることができます(自動的にサーバー構成が作成されます)
- PHP ウェブページデバッグ
サーバー構成を手動で作成する必要があります
右上のデバッグボタンをクリックすると、自動的にブラウザが開き、デバッグが開始されます
数字で IDE キーが作成されます
- PHP リモートデバッグ
サーバー構成を手動で作成する必要があります
右上のデバッグボタンをクリックすると、ブラウザを手動で開く必要があります
予め設定された IDE キーは、ブラウザの xdebug プラグインの IDE キーと一致する必要があります