EclipseでPHPのデバッグを可能にする(xdebugを使用)

Eclipse上でPHPのデバッグを実行したいと考えたのですが、設定に結構苦戦しました。
同じ悩みを抱える人も多いようなので、備忘録として公開してみます。ほぼ素人の考え方なので、見当違いな部分もあると思いますが、そこは勘弁してください。

OS: Windows7 64bit
PHP: 7.3.7
Apache: 2.4.39

※PHPをローカル環境で使う場合は、xamppを利用することが多いと思いますが、今回の例ではPHPとApacheを単独でインストールします。

### PHPとApacheのインストール・設定
[link-1]:https://www.javadrive.jp/php/
[link-2]:https://www.adminweb.jp/apache/
PHPのインストールは[こちら][link-1]を参照、
Apacheのインストールは[こちら][link-2]を参照しました。

PHP: 7.3.7
Apache: 2.4.39

[link-3]:https://www.javadrive.jp/php/install/index6.html
phpinfo()を使って、設定内容を確認する画面を出します。[こちら][link-3]を参照。下図のようにブラウザに表示されるはず。このページはこのまま表示させておきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/4c77fddb-d02c-d672-903c-cdecb27285f3.jpeg" width=50%>


###xdebugの入手とphp.iniの設定
[link-4]:https://xdebug.org/wizard.php
[こちら][link-4]のページで、xdebugのdllをダウンロードします。さっき表示しておいたPHP設定内容を確認する画面で、内容を全部コピー(ctrl + a → ctrl + c で大丈夫)し、ダウンロードページのテキストエリアに貼り付けます。これで必要なxdebugのバージョンを調べてくれるので、「Analyse my phpinfo() output」ボタンを押してダウンロードへ。

自分の環境では、"php_xdebug-2.7.2-7.3-vc15-x86_64.dll"というファイルがダウンロードされました。このdllファイルを、php.iniと同階層にある"ext"フォルダに格納します。

次にphp.iniを開き、末尾に以下のように追加。

```
[XDebug]
zend_extension=C:\php-7.3.7\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
```

zend_extension= には、xdebugのdllを格納したディレクトリを指定。
xdebug.remote_port　は、9000にしておくのが一般的みたいです。

Apacheを再起動し、再びphpinfo()でPHPの設定を確認。下図のようにxdebug関連の情報が表示されていればOK。

![screenshot.3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/8abc5d34-48cf-12f2-69c9-3c252707bc0e.jpeg)

### eclipseのインストールと設定
※eclipseをインストールする前に、Apache、PHP、xdebugのダウンロードと設定、php.iniの設定をしておいたほうが無難なようです。
先にeclipseをインストールしたら、起動時にサーバー関連のエラーが出るようになってしまったので。自分の知識不足とは思いますが。
エラーの発生を止められなくなった時に、eclipseのworkspaceのフォルダを丸ごと削除したら発生しなくなりました。プロジェクト等を作成してからではできないことなので、先にデバッグができる環境を整えることを優先すべきかと思います。

[link-5]:https://www.eclipse.org/downloads/packages/
[こちら][link-5]から、Eclipse IDE for PHP Developersをダウンロードし、インストール。
PHP開発用のプラグインもありますが、PHP専用のeclipseを別にインストールするほうが無難な気がします。動作がおかしくなっても、インストールし直せば済むことになるので。

[link-6]:http://mergedoc.osdn.jp/
[Pleiades][link-6]で日本語化もしておきましょう。

eclipseをインストールしたら、「ウィンドウ」→「設定」→「PHP」→「インストール済みのPHP」で、新規のPHP実行可能ファイルを登録します。
![screenshot.4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/c28e0ccf-c8f8-5c1f-1969-3b640638acbc.jpeg)

「次へ」ボタンで、デバッガー設定へ。「デバッガー」はXdebug、ポートは9000を指定。この設定は不要かもしれませんが、やっておいたほうがいいとは思います。
![screenshot.5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/c9179910-1e53-a3c4-fddb-ac035a588e67.jpeg)

###プロジェクト用のディレクトリとファイル作成
通常はeclipseのworkspaceにプロジェクトのディレクトリを作成しますが、今回はApacheのドキュメントルートの下に作成します。
![screenshot.7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/d0df605b-3e37-80d6-24c0-b740bac75a4b.jpeg)

Apacheをインストールしたディレクトリの、"htdocs"フォルダの下にプロジェクト用のディレクトリを作成。
eclipseから、このディレクトリをインポートします。

![screenshot.6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/fd8fe902-f16e-33e4-e210-aaa2bb3e3fcf.jpeg)

構成としては、下図のようになっています。
![screenshot.8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/550b6e99-f00f-c57e-b85e-c9ea8b05bd49.jpeg)

「実行」→「デバッグ構成」から、PHP Webアプリケーションで新規構成を選択。
最初に、PHPサーバーを新規登録します。
![screenshot.9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/406da1f8-129f-cbbd-a1c1-5c08b518daf1.jpeg)
サーバー名は適当に。ベースURLはlocalhost指定で。ドキュメントルートは、Apacheのドキュメントルートを指定。
「次へ」でデバッグの設定へ。
![screenshot.10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/4b3fd283-4ca8-c816-060f-86ed72725563.jpeg)
デバッガーはXdebug。ポートは9000を指定。「完了」ボタンで終了。

![screenshot.11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/b46b2195-64fe-3c94-362f-886d0f5acbf3.jpeg)
次にデバッグ構成を登録します。PHPサーバーは、先程新規登録したサーバーを指定。ファイルは、プロジェクトのindex.phpでいいでしょう。他のファイルを指定もできます。

これでデバッグモードで実行できるようになりました。下図のように、ブレークポイントで止まります。変数の値も取得できます。
![screenshot.12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/60b2c3a1-1c48-2400-edbb-3d083aed1fb8.jpeg)

注意点として、デバッグで実行ではなく通常の実行でスタートしても、強制的にデバッグモードになってしまうようです。通常の実行をするなら、「実行の構成」でデバッグを"None"にしたPHPサーバーを指定しておくといいようです。
![screenshot.13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/456855/07a603d4-f53c-2108-f837-57d4ec466bc5.jpeg)

[link-7]:https://rensrv.com/wp/xdebug/install-xdebug-on-eclipse/
全般的に、[こちら][link-7]のページが非常に参考になりました。このページを見たほうが分かりやすい人も多いと思います。


[link-8]:https://ameblo.jp/tomi-omiya/entry-12415984796.html
今回参考にしたリンク。
[PHP入門][link-1]
[Apache入門][link-2]
[phpinfo関数による設定内容の確認][link-3]
[Xdebug Tailored Installation Instructions][link-4]
[Eclipse Packages Download][link-5]
[Pleiades Plugin ダウンロード][link-6]
[【PHPへ xdebug導入】は簡単。実はEclipseで動かす設定が環境依存で若干ややっこい][link-7]
[Eclipse PHP(Pleiades All in One)でハマった件　起動でエラー][link-8]