3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker for Windowsでxdebugを使う

Posted at

設定で苦労したので備忘録として書いておく。

目的

Docker for Windowsでwebサービスの開発環境を構築する。
ホストOSはwindows、ゲストOSはlinux。
ホストOSのソースはゲストOSにマウントされている状態。
webはapacheとphp。
netabeansを使ってxdebugでphpデバッグするのが目的。

環境

os : windows 10 pro
Docker : 17.09.0-ce
docker-compose : 1.16.1
php : 5.6
NetBeansIDE 8.2

前提

php等はゲストOSにインストールされてるものとする。
自分の環境では以下で一通り入っている。Dockerfileより抜粋。

RUN yum install --enablerepo=epel,remi-php56,remi -y \
                              php \
                              php-cli \
                              php-gd \
                              php-mbstring \
                              php-mcrypt \
                              php-mysqlnd \
                              php-pdo \
                              php-xml \
                              php-xdebug \
                              php-pear \        
                              php-intl \
                              php-devel \
                              php-xmlrpc \
                              php-pecl-apcu \
                              php-pecl-xdebug

設定

ゲストOS側の設定

php.ini
;xdebug.soがあるパスを書く
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
;remote_connect_backを0にしないと動かない
xdebug.remote_connect_back=0
xdebug.remote_autostart=1
;remote_hostはホストOSのipにする
xdebug.remote_host=10.101.65.9
xdebug.remote_handler=dbgp
;portは9000でもよいが衝突しにくいものにしておく
xdebug.remote_port=49190
xdebug.max_nesting_level=1000
;ide側の設定と合わせる必要あり
xdebug.idekey="netbeans-xdebug"
xdebug.profiler_output_dir=/tmp
xdebug.remote_log=/tmp/xdebug.log

/etc/php.d にある15-xdebug.iniも編集

15-xdebug.ini
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.default_enable = 1
xdebug.remote_enable  = 1

設定したらapachectl restart

ホストOSのnetbeans設定

プロジェクト右クリック > プロパティ > 実行構成
プロジェクトURLに起動するアプリケーションのURLを追加。

netbeans設定.png

さらに「詳細」をクリック

「デバッグURL」:デフォルトを選択

「パスマッピング」:ゲストOSのソースのファイルパス
「プロジェクト」:ホストOSのソースのファイルパス
(ここでゲスト/ホストOSのソース同士がマッピングされデバッグが可能になる)

nete2.png

プロジェクト右クリック > デバッグ で起動する。

苦労

デバッグ起動時 接続をまっています のまま

php.iniの
xdebug.remote_connect_back=1だと接続できなかった。
/tmp/xdebug.logを見つつ以下を参考に対応。
https://qiita.com/bashishi/items/e40830884d107b4055de

ファイルのマッピングがされない

以下を参考に対応。
https://blog.freedom-man.com/php-xdebug/

参考文献

https://qiita.com/kojionilk/items/5cff97ece056fd3c469f
https://blog.freedom-man.com/php-xdebug/
https://qiita.com/bashishi/items/e40830884d107b4055de
http://tango.hatenablog.com/entry/2016/09/05/201108

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?