PHP:WSL+DockerでのPHPデバッグ方法

公開:2026.04.19 22:06

WSL+DockerでのPHPデバッグ方法

WSL Docker上に構築したPHPコンテナをWindows上のVSCodeからデバッグする方法。

環境

◆ Windows 11 25H2 (26200.8037) + WSL + Docker
◆ 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:
xxx@xxx:~$ lsb_release -a
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コンテナに接続
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)とした。
[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拡張機能をインストール
Windows上のVSCodeに "PHP Debug (xdebug.org)"" をインストールする。

4. xdebug.ini pecl install xdebug docker-php-ext-enable xdebug php debug Robert Lu

Docker:コンテナ内のファイルをVSCodeで編集する方法

公開:2026.04.19 07:22

コンテナ内のファイルをVSCodeで編集する方法

Windows + WSL + Ubuntu + Docker環境で、Dockerコンテナ内のファイルをWindowsのVSCodeから編集する方法。

→ 拡張機能 "Dev Containers (Microsoft)" をインストールすることで可能らしい。

手順

1. VSCode左下のマーク(マークの名前は不明)をクリックする
下記例では "WSL:Ubuntu" と表示されているところ

2. 選択リストが表示されるので "実行中のコンテナーにアタッチ" を選択

3. 注意メッセージが表示されるので [了解] をクリック

4. 実行中のコンテナ一覧が表示されるので、対象のコンテナを選択

5. 新しいVSCodeが開くのでフォルダを開く

これでDockerコンテナ内のファイルが開けた!
VSCode凄すぎ。


WSL Docker VScode Tips

PHP:PEAR ライブラリインストールの場所を調べる方法

公開:2026.04.18 17:16

PEAR ライブラリインストールの場所を調べる方法

PHP 学習:HTML_Template_Flexyのインストール」で HTML_Template_Flexy をインストールしたが、どこにインストールされるんだっけ?
を調べる方法

pear list-files (ライブラリ名)

実行結果:
root@05fa4e42bbcd:/var/www/html# pear list-files html_template_flexy
Installed Files For html_template_flexy
=======================================
Type Install Path
doc  /usr/local/docs/HTML_Template_Flexy/examples/EMPTY_FOLDERS_NOTHING_IN_HERE
php  /usr/local/lib/php/HTML/Template/Flexy.php
php  /usr/local/lib/php/HTML/Template/Flexy/Assign.php
php  /usr/local/lib/php/HTML/Template/Flexy/compileAll.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler.php
php  /usr/local/lib/php/HTML/Template/Flexy/Element.php
data /usr/local/data/HTML_Template_Flexy/HTML/Template/Flexy/example.ini
php  /usr/local/lib/php/HTML/Template/Flexy/Factory.php
php  /usr/local/lib/php/HTML/Template/Flexy/Plugin.php
php  /usr/local/lib/php/HTML/Template/Flexy/SmartyAPI.php
php  /usr/local/lib/php/HTML/Template/Flexy/Test.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token.php
data /usr/local/data/HTML_Template_Flexy/HTML/Template/Flexy/Tokenizer.lex
php  /usr/local/lib/php/HTML/Template/Flexy/Tokenizer.php
php  /usr/local/lib/php/HTML/Template/Flexy/Translator.php
php  /usr/local/lib/php/HTML/Template/Flexy/Tree.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Flexy.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/SmartyConvertor.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Flexy/CustomFlexyAttributes.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Flexy/Flexy.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Flexy/Tag.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/BodyOnly.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/Mail.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/Math.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/Php.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/RtfSimpleTags.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/SimpleTags.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Regex/Xml.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard/Flexy.php
php  /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard/Tag.php
php  /usr/local/lib/php/HTML/Template/Flexy/Element/Xul.php
php  /usr/local/lib/php/HTML/Template/Flexy/Plugin/Savant.php
doc  /usr/local/docs/HTML_Template_Flexy/HTML/Template/Flexy/templates/translator.html
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Cdata.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Else.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/End.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/EndTag.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Foreach.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/If.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Method.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Processing.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Tag.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Text.php
php  /usr/local/lib/php/HTML/Template/Flexy/Token/Var.php
test /usr/local/tests/HTML_Template_Flexy/tests/make_tests.php
test /usr/local/tests/HTML_Template_Flexy/tests/test.php
test /usr/local/tests/HTML_Template_Flexy/tests/testsuite.php
test /usr/local/tests/HTML_Template_Flexy/tests/test_blocks.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_bug_2959.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_conditions.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_error_foreach.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_flexy_tojavascript.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_forms.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_function.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_globals.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_image_view.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_include.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_javascript.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_looping.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_methods.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_namespaces.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_plugin_modifiers.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_raw_php.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_raw_text.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_style.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_usesname.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/test_variables.html.phpt
test /usr/local/tests/HTML_Template_Flexy/tests/treeTest.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/blocks.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/blocks.html.en.php#block1
test /usr/local/tests/HTML_Template_Flexy/tests/results2/blocks.html.en.php#block2
test /usr/local/tests/HTML_Template_Flexy/tests/results2/blocks.html.gettext.serial
test /usr/local/tests/HTML_Template_Flexy/tests/results2/forms.html.elements.serial
test /usr/local/tests/HTML_Template_Flexy/tests/results2/forms.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/forms.html.gettext.serial
test /usr/local/tests/HTML_Template_Flexy/tests/results2/forms.result.html
test /usr/local/tests/HTML_Template_Flexy/tests/results2/function.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/function.html.gettext.serial
test /usr/local/tests/HTML_Template_Flexy/tests/results2/function.result.html
test /usr/local/tests/HTML_Template_Flexy/tests/results2/globals.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/globals.html.gettext.serial
test /usr/local/tests/HTML_Template_Flexy/tests/results2/namespaces.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/results2/raw_php.html.en.php
test /usr/local/tests/HTML_Template_Flexy/tests/smarty/index.tpl
test /usr/local/tests/HTML_Template_Flexy/tests/smarty/index.tpl.html
test /usr/local/tests/HTML_Template_Flexy/tests/smarty/smartytest.php
test /usr/local/tests/HTML_Template_Flexy/tests/templates/blocks.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/bug_2959.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/conditions.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/error_foreach.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/flexy_raw_with_element.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/flexy_tojavascript.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/forms.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/function.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/globals.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/image_view.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/include.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/includes.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/include_block.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/javascript.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/looping.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/methods.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/namespaces.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/plugin_modifiers.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/raw_php.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/raw_text.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/style.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/usesname.html
test /usr/local/tests/HTML_Template_Flexy/tests/templates/variables.html
test /usr/local/tests/HTML_Template_Flexy/tests/trees/blocks.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/conditions.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/error_foreach.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/flexy_tojavascript.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/forms.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/function.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/globals.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/image_view.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/includes.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/javascript.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/looping.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/methods.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/namespaces.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/plugin_modifiers.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/raw_php.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/raw_text.html.tree
test /usr/local/tests/HTML_Template_Flexy/tests/trees/variables.html.tree
data /usr/local/data/HTML_Template_Flexy/ChangeLog
data /usr/local/data/HTML_Template_Flexy/TODO
  
以上


PHP

その他の記事