WSL+DockerでのPHPデバッグ方法
WSL Docker上に構築したPHPコンテナをWindows上のVSCodeからデバッグする方法。
環境
◆ Windows 11 25H2 (26200.8037) + WSL + Docker
◆ WSL:
PHP環境は過去記事「Docker 学習 #4:Docker Composeを学ぶ」で作成したPHPコンテナを使用する。
◆ WSL:
PS C:\Users\xxx> wsl --version
WSL バージョン: 2.3.24.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.8037
◆ Ubuntu:WSL バージョン: 2.3.24.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.8037
xxx@xxx:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
PHP環境は過去記事「Docker 学習 #4:Docker Composeを学ぶ」で作成したPHPコンテナを使用する。
手順
1. PHPコンテナに接続
2. PHPコンテナにxdebugをインストール
3. xdebug.ini作成
4. xdebug.iniをコンテナへコピー
5. コンテナ再起動
実行結果:
6. VSCodeにPHP Debug拡張機能をインストール
7.デバッグできない・・
WSL(Ubuntu)のIPアドレスを調べる。
実行結果:
8. debug.ini修正
9. コンテナ再起動
10. デバッグ実行
docker exec -it (CONTAINER ID) /bin/bash
※ (CONTAINER ID)は "docker ps" コマンドで確認。2. PHPコンテナにxdebugをインストール
PHPコンテナにて以下コマンドを実行
実行結果:
pecl install xdebug
実行結果:
root@05fa4e42bbcd:/usr/local/lib/php/HTML# pecl install xdebug
downloading xdebug-3.5.1.tgz ...
Starting to download xdebug-3.5.1.tgz (282,739 bytes)
..........................................................done: 282,739 bytes
115 source files, building
:省略
Build process completed successfully
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20230831/xdebug.so'
install ok: channel://pecl.php.net/xdebug-3.5.1
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20230831/xdebug.so" to php.ini
3. xdebug.ini作成
WSL上にxdebug.iniを作成する。
保存場所は compose.yaml と同じ階層(~/docker/php)とした。
保存場所は compose.yaml と同じ階層(~/docker/php)とした。
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
; VSCode側へ接続する
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
; ログ(トラブル時)
xdebug.log=/tmp/xdebug.log
4. xdebug.iniをコンテナへコピー
以下コマンドでxdebug.iniをコンテナにコピーする。(CONTAINER ID)は "docker ps" コマンドで確認。
実行結果:
docker cp ./xdebug.ini (CONTAINER ID):/usr/local/etc/php/conf.d/xdebug.ini
実行結果:
root@xxx:~/docker/php# docker cp ./xdebug.ini 05fa4e42bbcd:/usr/local/etc/php/conf.d/xdebug.ini
Successfully copied 207B (transferred 2.05kB) to 05fa4e42bbcd:/usr/local/etc/php/conf.d/xdebug.ini
5. コンテナ再起動
docker restart (CONTAINER ID)
実行結果:
root@xxx:~/docker/php# docker restart 05fa4e42bbcd
05fa4e42bbcd
6. VSCodeにPHP Debug拡張機能をインストール
7.デバッグできない・・
WSL(Ubuntu)のIPアドレスを調べる。
ip route
実行結果:
root@xxx:~/docker/php# ip route
default via 172.25.0.1 dev eth0 proto kernel
:
8. debug.ini修正
PHPコンテナに接続し /usr/local/etc/php/conf.d/xdebug.ini を修正。
vimにて修正しようと思ったが "bash: vim: command not found" になってしまったのでvimをインストール。
実行結果:
xdebug.client_host= の値を先ほど 7. で調べたIPアドレスに変更する。
vimにて修正しようと思ったが "bash: vim: command not found" になってしまったのでvimをインストール。
実行結果:
root@05fa4e42bbcd:/usr/local/etc/php/conf.d# apt install vim
:省略
Processing triggers for libc-bin (2.41-12+deb13u2) ...
"vim /usr/local/etc/php/conf.d.xdebug.ini" コマンドで xdebug.iniを修正xdebug.client_host= の値を先ほど 7. で調べたIPアドレスに変更する。
9. コンテナ再起動
10. デバッグ実行
PHP WSL Docker VSCode デバッグ




0 件のコメント:
コメントを投稿