2023年だがVSCodeでPHP5.6環境でxdebugを使用できるようにする

# 2023年だがVSCodeでPHP5.6でxdebugを使用できるようにする

## 背景
* 案件の関係でUbuntu20.04にphp5.6を入れているが、xdebugを使いたかったため入れてみる。

## 参考
* [こちら](https://qiita.com/koriym/items/96eb364ad9f11023bcdb)を参考にさせていただきましたが、自分の環境ではいろいろ足りなかったので、補足しながら記述していきます。

## 環境
Ubuntu20.04
PHP5.6


## 手順
### autoconfのインストール
* 普通にxdebugをインストールしようとすると古すぎてpeclではインストールできず、ソースインストールもphpizeのautoconfで失敗するとのことでソースに必要なautoconfからインストールを始めます。

* downloadsディレクトリを作成しautoconfをインストールし展開
```sh
cd /
mkdir downloads
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
tar xzf autoconf-latest.tar.gz
```

* 展開したディレクトリに移動
```sh
cd autoconf-2.71
```

* configureファイルを作成
```sh
./configure --prefix=/usr/local
```

* 次にmakeファイルを作成するがmakeコマンドが無いと怒られたのでインストール
```sh
apt install make
```

* makeファイルを作成
```sh
make
```

* インストール
```sh
sudo make install
```

### Xdebug2.5.5をインストール
* downloadsディレクトリに戻りXdebugをダウンロード
```sh
cd /downloads
curl -OL https://xdebug.org/files/xdebug-2.5.5.tgz
tar xzf xdebug-2.5.5.tgz
cd xdebug-2.5.5
```

* 次にconfigureファイルを作成するためにphpizeコマンドを使用しようとしたがないと怒られたのでインストール
```sh
apt install php5.6-dev
```

* configureファイルを作成
```sh
phpize
```

* configureを実行
```sh
./configure
```

* makeファイルを作成
```sh
make
```

* インストール
```sh
sudo make install
```
* 結果は下記となるがその時に```/usr/lib/php/20131226/```を記憶しておく。
```sh
Installing shared extensions:     /usr/lib/php/20131226/

  +----------------------------------------------------------------------+
  |                                                                      |
  |   INSTALLATION INSTRUCTIONS                                          |
  |   =========================                                          |
  |                                                                      |
  |   See http://xdebug.org/install.php#configure-php for instructions   |
  |   on how to enable Xdebug for PHP.                                   |
  |                                                                      |
  |   Documentation is available online as well:                         |
  |   - A list of all settings:  http://xdebug.org/docs-settings.php     |
  |   - A list of all functions: http://xdebug.org/docs-functions.php    |
  |   - Profiling instructions:  http://xdebug.org/docs-profiling2.php   |
  |   - Remote debugging:        http://xdebug.org/docs-debugger.php     |
  |                                                                      |
  |                                                                      |
  |   NOTE: Please disregard the message                                 |
  |       You should add "extension=xdebug.so" to php.ini                |
  |   that is emitted by the PECL installer. This does not work for      |
  |   Xdebug.                                                            |
  |                                                                      |
  +----------------------------------------------------------------------+
```

### Xdebugの設定
* XdebugをPHP5.6で使用できるように設定していきます。

* php.iniを編集
```sh
sudo vim /etc/php/5.6/apache2/php.ini
```

* zend_extensionに先ほどインストールしたxdebugのパスを設定（パスは先ほど記憶したパス）
```ini
zend_extension=/usr/lib/php/20131226/xdebug.so
```

* その他の設定も行う
※xdebug3と設定が違うので注意
```ini
zend_extension=/usr/lib/php/20131226/xdebug.so

[xdebug]
; Xdebugの機能を有効化
xdebug.remote_enable=1
; PHPの実行時にデバッグを自動的に開始する
xdebug.remote_autostart=1
; 接続先ホスト
xdebug.remote_host=localhost
; 接続先ポート
xdebug.remote_port=9003
```
* apacheの再起動
```sh
sudo service apache2 stop
sudo service apache2 start
```

* 年のためphpinfoを確認すると設定できている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920579/651bf713-8634-781c-2cc9-2800c749d7e1.png)

### VSCodeのlaunch.jsonを設定
```json
"configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html/対象ディレクトリ名": "${workspaceRoot}"
            },
        },
```