【Laravel】プロジェクト事前準備③～PHPデバッグ環境構築（Xdebug）

# Xdebugとは
PHPのデバッグツール（拡張機能モジュール・エクステンション）のことです。

# 前提条件
PHP（XAMPP）・Composerのインストールが完了していること。
以下の記事の続きです。
**PHP（XAMPP）**

https://qiita.com/moko_san/items/b3b7d6000db68735aa14

**Composer**

https://qiita.com/moko_san/items/6b69d408d2ba0eccdb88


# 1. Xdebugのインストール
### ① インストーラのダウンロード
**(1) 以下内容（PHPの環境情報）を全てコピー**
![XAMPP21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/a8b92210-7f42-c282-8e65-67dc52c1fccb.png)
**(2) 以下サイト内のテキストエリアに(1)でコピーした内容を貼り付けます。**
　　https://xdebug.org/wizard
  ![xdebug01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/5e5dc2b9-d6c6-f1a5-cf30-646cdf26abd4.png)
**(3) [Analyse my phpinfo() output] をクリックします。**
![xdebug02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/58b76466-ab55-a898-6eb2-ebc347b1c793.png)
　→(1)～(3)では、PHP環境の詳細情報（バージョン・OS・ビルド設定など）を
　　インストールウィザードが解析し、PHPのバージョンとビルド設定（32ビット/64ビット
　　など）を特定して適切なエクステンションファイルを作成しています。
**(4) [php_xdebug-X.X.X-X.X-vsXX-x86_64.dll] をクリックします。**
　　→これにより、エクステンションファイルがダウンロードされます。
![xdebug03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/d27ad956-186b-b0f6-9915-89481b7fee44.png)
**(5) 自動でエクスプローラーが開くので、インストーラの保存先を選択し保存します。**
**(6) (4)でダウンロードしたエクステンションファイル名を「php_xdebug.dll」へ変更**
　　**します。**
　→PHPのエクステンションファイル名には「php_エクステンション名.dll」という
　　命名規則があります。これに則ることで、他エクステンションファイルとの一貫性を
　　保ち、ファイルとエクステンションの対応が明確になります。
**(7) (5)ファイルを「C:\xampp\php\ext」へ移動します。**
　→これにより、PHPがエクステンションファイルを認識しロードできるようになります。
　　※PHPは設定ファイル「php.ini」の「extension_dir」ディレクティブで指定した
　　　ディレクトリの中からエクステンションファイルを探します。
　　　デフォルト設定値が「C:\xampp\php\ext」のため、これに合わせます。
### ② PHPの設定
設定ファイル「php.ini」を編集し、設定を変更します。
**(1) zend_extensionの設定を変更する**
　　PHP起動時に読み込むZend Engine（PHPのコアエンジン）の拡張機能を指定します。
　　初期値は「opcache」となっていますが、これを「xdebug」に変更し、
　　先頭の「;」（コメントアウト）を削除し有効化します。
　　※opcache：キャッシュを利用してPHP実行の高速化を実現する拡張モジュール
```
zend_extension=xdebug
```
**(2) デバッグ設定を追加する**
　　以下の設定を追記します。
　　**・xdebug.mode**：Xdebugの動作モードを指定します。
　　　debug・develop・coverage・gcstats・profile・traceが設定できカンマ区切りで
　　　複数指定することも可能です。
　　**・xdebug.start_with_request**：デバッグセッションの自動的開始を設定します。
　　　yes・no・triggerが指定可能です。
```
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
```
　※セクションタイトル```[xdbug]```は視覚的な分かりやすさのため記述しています（他設定も
　　同様に記述されています）。
　　コメント扱いになるため、PHPの設定に影響を与えることはありません。
　※他に以下の設定がありますが、今回はデフォルト値で問題ないため変更していません。
　　**・xdebug.client_host**：デバッグするホスト（マシンのIPアドレス または 127.0.0.1
  　　（ローカルホスト））を指定します。デフォルトは「127.0.0.1」です。
　　**・xdebug.client_port**：デバッグするホストのポートを指定します。
　　　デフォルトは「9003」です。
　※Xdebugのバージョンにより記法が異なります（今回は3.系のため上記で記述）。

### ③ 動作確認
**(1) XAMPPのApacheを再起動する**
　　②設定を反映させるため、[Stop] → [Start] より再起動します。
  ![xdebug04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/8fe79f08-1faf-11d8-236e-53275ec81880.png)
**(2) テスト用phpファイルにアクセスし、設定内容を確認する**
![xdebug05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2846445/5851ebe0-3b27-6d9d-e4b6-c7a5ee1f00a2.png)

# 参考
### デバッグ関連
https://menter.jp/blog/what-is-debug

### Xdebugについて
https://ascii.jp/elem/000/001/491/1491200/
### インストール手順
https://qiita.com/ienoue/items/11ceb479cf9741cbb795
### php.iniの設定内容
https://hnw.hatenablog.com/entry/20130715

https://www.xserver.ne.jp/manual/man_server_php_apc.php#:~:text=%E3%80%8CAPC%E3%80%8D%E3%82%84%E3%80%8COPcache%E3%80%8D,PHP%E3%81%AE%E6%8B%A1%E5%BC%B5%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82