eclipseなどのIDEからphpをデバッグ実行したいと思った時に、
php.iniにxdebugセクションを記述しないといけない。
しかし、xdebugセクションは、何となく書いて何となく動いているって言う人のために、
各設定値についてその意味を分かりやすくまとめた。
なお関連記事として、xdebugをpeclを使ってインストールする手順も参考までに掲載しておくので、よければ読んでほしい。
xdebugセクションの設定値を理解する(例)
# php.ini
[XDebug]
;重要
zend_extension = "C:\development\xampp\php\ext\php_xdebug.dll" (1)
xdebug.remote_enable = true (2)
xdebug.remote_host = "127.0.0.1" (3)
xdebug.remote_port = 9000 (4)
;そこまで重要じゃない
xdebug.profiler_enable = 1
;xdebug.profiler_output_dir = "C:\tmp"
xdebug.profiler_output_dir = "C:\development\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_handler = "dbgp"
;xdebug.trace_output_dir = "C:\tmp"
xdebug.trace_output_dir = "C:\development\tmp"
早速だが、xdebugの設定値の例を書いてみた。
値を「重要」「そこまで重要じゃない」の二つに分類して書いてみたが、
今回は「重要」に分類した(1)〜(4)の値に重きを置いて説明していく。
(1) zend_extension:xdebugのインストールパスを記載
「zend_extension」には、インストールしたXdebug本体のパスを記載する。
zend_extension = "C:\development\xampp\php\ext\php_xdebug.dll" (1)
Xamppの場合、「xamppのルート/php/ext/」配下に拡張機能は配置するので、例として上記はそのように記述している。
(2) xdebug.remote_enable:リモートセッションを有効にするか記載
「xdebug.remote_enable」には、リモートセッションを有効にするかどうかを記載する。
trueで有効にする設定なのでtrueと記載しておく。
xdebug.remote_enable = true (2)
ここで「リモートセッション」という言葉が出てきたが、
このリモートセッションが何かというのを説明していく。
リモートセッションを理解することでxdebugの設定値を理解したも同然だからだ。
それにはまず、「リモート」という言葉が何を意味しているかを理解することが鍵となる。
xdebugにおけるリモートとは
xdebugでまず大事な概念が、「リモート」が何かという理解。
結論から言うと、以下のような関係図(ローカルの場合)になっている。

PHPやxdebugが置かれているphp実行環境(つまりxamppなど)とは別の場所でデバッグを制御する方がリモート。つまり通常エクリプスなどのIDEのことを指す。
リモート側(エクリプスなど)から、xdebug入りphp実行環境下のプログラムを実行することで、デバッグモードでプログラムを起動することができる(これをリモートセッションという)。
そしてリモート側で事前にブレークポイントを張ったポイントで処理を止めることができ、効率的にデバッグを進めることができる。

ローカルのデバック開発環境を構築するのに、「リモート」と言うのも何やらしっくりこない単語だだが、php実行環境から見れば、エクリプスであれPHPStormであれ、外部のプログラムであるので、そいつらをまとめて「リモート」と呼んでいる訳である(筆者主観含む)。
php実行環境から見ればIDEなどは外部プログラムなので、「リモート」と呼んでいるよ(主観含む)。
上記を踏まえて、リモートセッションとは
上記を踏まえて、xdebugのリモートセッションとは、分かりやすく言うと
エクリプスなどのIDEから、php実行環境に対して確率する、デバッグ一連の流れのことだ。

エクリプスなどのIDEから、php実行環境に対して確率する、デバッグ一連の流れのことだ。
(3) xdebug.remote_host:リモートホストを記載
「xdebug.remote_host」には、リモートホストのIPを記載する。
xdebug.remote_host = "127.0.0.1" (3)
リモートの説明はもう大丈夫だろう。
リモートが同じローカルの場合のは、ループバックアドレス(127.0.0.1)を記載しておけばOKだ。
(4) xdebug.remote_port:リモートポートを記載
「xdebug.remote_port」には、リモートの接続ポートを記載する。
通常、9000で指定しておく。
php.ini の xdebug 設定値まとめ
- 「zend_extension」には、インストールしたXdebug本体のパスを記載する。
リモートとは、PHPやxdebugが置かれているphp実行環境(つまりxamppなど)とは別の場所でデバッグを制御する方のこと。以上を踏まえて、
- 「xdebug.remote_enable」には、リモートセッションを有効にするかどうかを記載する。
- 「xdebug.remote_host」には、リモートホストのIPを記載する。
- 「xdebug.remote_port」には、リモートの接続ポートを記載する。
関連記事
https://www.php.net/manual/ja/configuration.file.php
PHPやxdebugが置かれているphp実行環境(つまりxamppなど)とは別の場所でデバッグを制御する方のこと