PHP

【Eclipse×PHP】ブレークポイントで止まらないときの原因対処法

色んな言語やIDEを触っていると、特定のIDEの動かし方やデバッグの方法をなかなか覚えられない。
個人的にVisualStudio系はラクだけど、Eclipseを使う場合は毎度何かしらでハマる。
今回もEclipse×PHPを使用してデバッグしようとしたら、ブレークポイントにヒットしないという現象に遭遇した。

Eclipse下部のステータスを見ると「(プロジェクト名)の起動: (48%)」のままで止まっているし。

どうせ数年後にまたハマるので、対処法を備忘録として残すことにした。

 
今回動かしたい環境

  • Apach2.4
  • PHP-7.3.6
  • php_xdebug-2.7.2-7.3-vc15-x86_64.dll
  • Eclipse Version 2019-03 (4.11)

Apahce、PHPともに複数バージョンインストールしていて、共存可能としたい。


XDEBUGの設定

まず、PHPでデバッグするにはXDEBUGという機能を使う。
XDEBUGを使用するには、PHPのバージョンやphp.iniの設定などを確認する必要がある。
以下がそのポイント。

PHPのバージョンは適切か

まずインストールしたPHPのバージョンでXDEBUGが使えることを確認する。PHPのバージョンによっては、XDEBUGのライブラリ(php_xdebug-XXX.dll)が入っていない場合がある。
入っていない場合は、phpinfo()の出力結果をに張り付けて必要なXDEBUGのバージョンを確認することができる。

XDEBUG公式サイト

php.iniの記述は適切か


~~~ 省略 ~~~

[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の設定

ブレークポイントが無効となっていないか

Eclipseのツールバーにブレークポイントの有効/無効を設定できるボタンがある。

下記の状態では無効となり、設定してもすべてのブレークポイントはスルーされる。
Eclipseのブレークポイント無効状態

ボタンを押して、下記の状態にすれば、ヒットするようになる。
Eclipseのブレークポイント有効状態

PHPデバッグの設定

複数のPHPが共存場合、どのPHPで動かすのか設定する必要がある。
Eclipseでの設定手順は下記のとおり。

①ウィンドウ ⇒ 設定 ⇒ PHP ⇒ デバッグ で設定画面を開く。
設定画面 - PHP - デバッグ

②PHPの実行可能ファイルを「PHP 7.3.6(CLI)」を選択する。
PHP実行可能ファイルの変更

③PHP実行可能ファイルのリンクをクリックする。
PHP実行可能ファイルをクリック

④「インストール済みのPHP」の画面が表示される。
インストール済みのPHPの画面
もしここで対象のPHPが一覧にない場合は、追加から対象の「php.exe」を選択することで表示させることができる。

 
⑤ここでも対象のPHP(PHP 7.3.6(CLI))を選択する。
PHP 7.3.6(CLI)を選択

⑥「適用して閉じる」をクリックする。
適用して閉じる

開始URLの指定

これはNetBeansでも同じだが、デバッグを実行するとブラウザが立ち上がり、最初に引数がついていることに気づく。
XDEBUGのURLパラメーター

指定した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ではまったブレークポイントが止まらない件の対処法。
他にもあれば追記していきます。


 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です