色んな言語やIDEを触っていると、特定のIDEの動かし方やデバッグの方法をなかなか覚えられない。
個人的にVisualStudio系はラクだけど、Eclipseを使う場合は毎度何かしらでハマる。
今回もEclipse×PHPを使用してデバッグしようとしたら、ブレークポイントにヒットしないという現象に遭遇した。
Eclipse下部のステータスを見ると「(プロジェクト名)の起動: (48%)」のままで止まっているし。
どうせ数年後にまたハマるので、対処法を備忘録として残すことにした。
今回動かしたい環境
Apahce、PHPともに複数バージョンインストールしていて、共存可能としたい。
まず、PHPでデバッグするにはXDEBUGという機能を使う。
XDEBUGを使用するには、PHPのバージョンやphp.iniの設定などを確認する必要がある。
以下がそのポイント。
まずインストールしたPHPのバージョンでXDEBUGが使えることを確認する。PHPのバージョンによっては、XDEBUGのライブラリ(php_xdebug-XXX.dll)が入っていない場合がある。
入っていない場合は、phpinfo()の出力結果をに張り付けて必要なXDEBUGのバージョンを確認することができる。
~~~ 省略 ~~~
[XDebug]
zend_extension = C:\php7.3.6\ext\php_xdebug-2.7.2-7.3-vc15-x86_64.dll
xdebug.remote_connect_back=On
xdebug.remote_enable = 1
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
extension=php_openssl.dll
php.iniの記述が上記の設定になっていれば、ブレークポイントでヒットすることを確認できた。
zend_extensionは、実際のxdebugのライブラリのパスと合わせる必要がある。
あとは既に9000番ポートを使用されている場合があるので、その場合は9001などにずらしてみよう。
既に使われているかはコマンドプロンプトで「netstat -nao」にて確認する。
必要な記述は意外と少ない。
Eclipseのツールバーにブレークポイントの有効/無効を設定できるボタンがある。
下記の状態では無効となり、設定してもすべてのブレークポイントはスルーされる。
複数のPHPが共存場合、どのPHPで動かすのか設定する必要がある。
Eclipseでの設定手順は下記のとおり。
①ウィンドウ ⇒ 設定 ⇒ PHP ⇒ デバッグ で設定画面を開く。
②PHPの実行可能ファイルを「PHP 7.3.6(CLI)」を選択する。
④「インストール済みのPHP」の画面が表示される。
もしここで対象のPHPが一覧にない場合は、追加から対象の「php.exe」を選択することで表示させることができる。
⑤ここでも対象のPHP(PHP 7.3.6(CLI))を選択する。
これはNetBeansでも同じだが、デバッグを実行するとブラウザが立ち上がり、最初に引数がついていることに気づく。
指定したURLは「/workspace/hogehoge/index.php」までだが、その後ろにXDEBUGで開始したことを示すような文字列がついている。
この場合は良いが、「/workspace/hogehoge/」としないよう注意が必要である。
Webサーバーの設定により、フォルダまでの指定のみでページの指定がない場合は、デフォルトのページを指定できるが(index.xxxが一般的)
上記の設定で実行するとURLが下記の状態となって実行される。
「workspace/hogehoge/?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=XXXXXXXXX」
上記の状態になるとブレークポイントで止まらない現象に遭遇したので、
URLを指定する際に、開始ページをつけることも必須だ。
URLの指定は、
①デバッグ ⇒ デバッグの構成 で「構成の作成、管理、および実行」画面を表示する。
②URLの自動生成を外し、開始ファイルを指定する。(この場合はindex.php)
以上で無事にブレークポイントにヒットした。
以上がEclipse×PHPではまったブレークポイントが止まらない件の対処法。
他にもあれば追記していきます。