掲題のとおりです作業メモです。 昨日今日から zendframework/zend-stratigility 触ってます楽しいですしかしブレイクポイント貼れないのがストレスどうにかするぞ、と思ったときのメモです。
xdebug食っているか見る
- php自体が食っていてもサーバー側(Apacheとか)が食っていないみたいな自体があったら嫌だから確認しましょう
phpinfo()
するかphp -i |grep xdebug
Dockerイメージ、php:7.2-apache
でやった時は
RUN pecl install xdebug-2.6.0 && docker-php-ext-enable xdebug
を忘れずにね/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
にモジュールあるよ
DBGpからのコネクトバックが来るか確認
- コンテナ側で「9000番に飛ばしていますか」を見る
sudo tcpdump -nn dst port 9000
正解例:
root@8a529e47bb64:/var/www/html# tcpdump -nn dst port 9000 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 09:59:17.461157 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [S], seq 1168735218, win 29200, options [mss 1460,sackOK,TS val 65964320 ecr 0,nop,wscale 7], length 0 09:59:17.466740 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [.], ack 452897992, win 229, length 0 09:59:17.466918 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 0:490, ack 1, win 229, length 490 09:59:17.469833 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [.], ack 38, win 229, length 0 09:59:17.470018 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 490:713, ack 38, win 229, length 223 09:59:17.473338 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 713:934, ack 73, win 229, length 221 09:59:17.476681 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 934:1158, ack 113, win 229, length 224 09:59:17.477883 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 1158:1389, ack 158, win 229, length 231 09:59:17.479941 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 1389:1610, ack 193, win 229, length 221 09:59:17.481909 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 1610:1806, ack 210, win 229, length 196 09:59:17.483123 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 1806:2020, ack 222, win 229, length 214 09:59:17.484186 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 2020:2320, ack 237, win 229, length 300 09:59:17.485338 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 2320:2548, ack 295, win 229, length 228 09:59:17.486849 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 2548:2777, ack 350, win 229, length 229 09:59:17.488071 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 2777:3046, ack 409, win 229, length 269 09:59:17.491217 IP 172.23.0.3.39156 > 192.168.65.2.9000: Flags [P.], seq 3046:3311, ack 468, win 229, length 265
xdebug.remote_host をいじってみる
docker.for.mac.host.internal
で動くはずなんだけど。
デバッグのときの前提は「素直な気持ちになれ」「先入観を捨てろ」なので、「より確実に動く方!!」に近づいていきましょうってことでhostを決め撃ちしてみる。
tcpdumpで「宛先」がわかっているはず
ちなみに動くxdebug.ini
これで今は動いてる。
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so xdebug.remote_enable = On xdebug.remote_autostart = On xdebug.remote_host = docker.for.mac.host.internal xdebug.remote_port=9000
Serversの設定について
うまく接続が返ってくれば、自動的に設定ダイアログが開くのでソレを待っても良い気がする。