XAMPP なしで、Windows の Visual Studio Code を使って PHP デバッグしてみる

XAMPPを入れれば簡単に実現できますが、タイトルとおり「Webサーバなしで」あえてローカル PHP　だけインストールして Visual Studio Code（以下 VSCode）で PHP を実行＆デバッグしてみます。※XAMPPが嫌いな訳ではない

お約束の微妙にはまる点があったので自分メモ用に残しておきます。

# 動作環境
- Windows 8/10
- Visual Studio Code 1.43.1 ※インストール済みであること
- [PHP 7.4.4](https://windows.php.net/download#php-7.4)  (VC15 x64 Thread Safe / php-7.4.4-Win32-vc15-x64.zip)

## PHP のインストール
https://windows.php.net/download#php-7.4 から Thread Safe 版をダウンロードして任意のディレクトリに展開しておく。（ここでは C:\php7 にインストールしてみてます）

Windowsの環境変数に `C:\php7` を追加して黒い画面で `php -v` を叩いてみる。

と…下記が表示されなければ、いいのだが…

```text
PHP Warning:  'vcruntime140.dll' 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0
```

表示された場合は、「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」をインストールすると[解消](https://qiita.com/ricchan_k/items/5b05851a351d3d590f34#vcruntime140dll%E3%81%A3%E3%81%A6%E4%BD%95)します。

ダウンロード先は、[ここ](https://visualstudio.microsoft.com/ja/downloads/) からですが判りづらい。下までスクロールして「その他のツールとフレームワーク」をクリックすると、ランタイムライブラリのダウンロードが項目あります。

## PHPデバッグツール「XDebug」のインストール
PHPのバージョンに合わせた形で XDebugがあるようですのでそのインストール手順。

手順１
`C:\PHP7` の下にある `php.ini-production` を `php.ini` にコピーする。

手順２
黒い画面で以下のコマンドを実行する。クリップボードに結果がコピーされます。

```cmd
C:\> php -i | clip
```

[https://xdebug.org/wizard](https://xdebug.org/wizard) サイトに結果を貼り付け "Analyse my phpinfo output" ボタンを押下する。

![vscode_php_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44540/09c2e0e6-797f-397f-289b-155520274b86.png)


上記の Instructions に従い xdebug の DLL をダウンロードし C:/php7/ext 以下に配置する。

手順３
`php.ini` の先頭に下記をコピペする。上記の Instructions で指示されている `zend_extension` パスは指定されたとおりに記述すると間違っているので、DLL を配置したパスをちゃんと記述する。

```text
zend_extension = C:\php7\ext\php_xdebug-2.9.3-7.4-vc15-x86_64.dll
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
```

黒い窓で `php -v` と実行してみて下記の Warning(warn なのに Failed …) が表示されていなければOK。

```
PHP Warning: Failed to load C:/php/ext/php_xdebug-2.9.3-7.4-vc15-x86_64.dll, 指定されたファイルが見つかりません。
```

# VSCode拡張機能 PHP Debug のインストール
左バーの拡張機能で 「PHP Debug」、「PHP IntelliSense」をインストールする。

# デバックしてみる
適当な phpプログラムを表示し。左バーの実行を押下し "To customize Run and Debug create a launch.json" のリンクを踏む。プルダウンから「PHP」を選択する。

![vscode_php_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44540/1d3dc422-5610-cad4-aae4-a538afaa0a4e.png)


`launch.json` は、以下の様に１行追加する。"name": "Listen for XDebug" は消しても問題ない。

```
{
    "name": "Launch currently open script",
    "type": "php",
    "request": "launch",
    "program": "${file}",
    "cwd": "${fileDirname}",
    "port": 9000,
    "runtimeExecutable": "C:\\php7\\php.exe"
}
```

デバッガーを起動しつつブレイクポイントを設定し "Listen for XDebug"を実行する。
うまくいった＾＾

![vscode_php_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44540/6ada15cd-03f9-8d85-8221-115ae9f0c208.png)

# 参考サイト
- [Visual Studio CodeでPHPをデバッグする方法](https://qiita.com/deux222/items/af75319ece05653c4bb5)
- [PHPをWindows 10上のVisual Studio Codeを使って「Webサーバなしで」デバッグする方法](https://todkm.com/2019/06/4492)
- [Visual Studio Code でPHPを開始するまでの手順](https://qiita.com/tfukumori/items/97a8f1ac6532612b004f)
- [まだある！　PHPプログラミングを支援する拡張機能](https://www.atmarkit.co.jp/ait/articles/1809/18/news020.html)