laradock+VSCode+xdebugの設定でハマったところ

公開日:2019-05-12
最終更新:2019-05-12

環境

laradock
Docker for Windows 2.0.0.3 (31259)
VSCode 1.33.1
xdebug 2.7.2
php 7.2

laradock側の設定

ワークスペースとPHPでxdebugをインストールするよう設定(.env)

...  
WORKSPACE_INSTALL_XDEBUG=true  
...  
PHP_FPM_INSTALL_XDEBUG=true  
...  

2つのxdebug.iniを下のように修正
(/php-fmp/xdebug.ini)
(/workspace/xdebug.ini)
xdebug.remote_host windowsの場合はdockerhostで動いたがmacの場合はDockerのネットワーク構成が異なるので別の設定じゃいと動かないらしい
xdebug.remote_port 他のアプリで使用していないポートならデフォルトの9000でも何でも良い

xdebug.remote_host=dockerhost  
xdebug.remote_connect_back=0  
xdebug.remote_port=9002  
...  
xdebug.remote_autostart=1  
xdebug.remote_enable=1  
xdebug.cli_color=1  

これでdocker-compose upすればlaradock側はok

VSCode側の設定

拡張機能のPHP Debugをインストール

Vscodeで開いているlaravelプロジェクトに下記のファイルを作成(/.vscode/launch.json)
portはxdebug.iniで指定した値
pathMappingsは {リモートのドキュメントルート} : {ホストのドキュメントルート}

{  
    "version": "0.2.0",  
    "configurations": [  
        {  
            "name": "Listen for XDebug",  
            "type": "php",  
            "request": "launch",  
            "port": 9002,  
            "stopOnEntry": true,  
            "pathMappings": {  
                "/var/www": "${workspaceRoot}"  
            }  
        }  
    ]  
}  

Firewallの設定

VSCodeがDocker内のXdebugと通信出来るようにFirewallを設定する必要がある。
とりあえずVSCodeはプライベートネットワークでの通信出来るように設定した。
Dockerのworkspaceコンテナでxdebugを試みるが下のようなエラーが出て接続出来ない。

        I: Connecting to configured address/port: dockerhost:9002.  

        E: Time-out connecting to client. :-(  

色々調べてみたらDockerが動いているネットワークが識別されていないネットワーク(パブリック)なためFirewallに通信を遮断されていた。
なのでVSCodeがパブリックネットワークでも通信出来るようにするか、識別されていないネットワークをプライベートとみなすかすることで接続出来るようになった。

参考

https://qiita.com/hiro-tarosuke/items/adcc382ca98dfb89401b
https://qiita.com/ditflame/items/bf4b5f412bf607c5c6d2#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%8C%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

記事が少しでもいいなと思ったらクラップを送ってみよう!
1
+1
@hiroitaの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする