LoginSignup
3
3

More than 5 years have passed since last update.

メモ PHP docker xdebug

Last updated at Posted at 2019-05-05

何がしたい

dockerコンテナとしてnginxとphp-fpm動作させて、PhpStormを使ったxdebugによるリモートデバッグできるまでをやる

Overview

  • mac
  • dockerはdocker-for-mac
  • dockerコンテナ上でnginxが動作
  • dockerコンテナ上でphp-fpmが動作
    • with Xdebug
  • PhpStormでXdebugリモートデバッグをする

Source

HTTPリクエストの処理概要

  • nginxにport:80でリクエストが飛ぶ
  • nginxからphp-fpmにport:9000でリクエストが飛ぶ(9000はphp-fpmのデフォルト設定)
  • php-fpmはphpを動作させてレスポンスする
    • php上でxdebugが動作する (xdebug.remote_autostart=1 なので、勝手に動作)
    • php上のxdebugが、phpの処理中に、xdebug.remote_hostに対してDBGp接続(これなに?)を試みる
    • 公式の説明gif: https://xdebug.org/images/docs/dbgp-setup.gif
    • PhpStormがDBGpをうまくやっている・・・んだと思う(曖昧・・・💧)
  • nginxがphp-fpmのレスポンスをクライアントに返す

(URLに?XDEBUG_SESSION_START=xxxとかつける必要はないよ)

docker

  • nginx用のコンテナ、php-fpm用のコンテナ を作成する
  • docker-for-macだと、"dockerのホストマシン"というのはmacではなく、mac上で動いている仮想環境
  • コンテナから見たmacは、docker.for.mac.host.internal
    • (ちなみにホストマシンはhost.docker.internal)
  • せっかくなので、docker-composeを使う

Xdebug

  • なんでかXdebugがデフォルトで使うport:9000と、php-fpmがデフォルトで使うport:9000とが、被っているので、どちらかを変える必要がある
    • なんでやねん
  • 設定例
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_host=docker.for.mac.host.internal
xdebug.remote_port=9001
xdebug.remote_autostart=1
; xdebug.remote_connect_back=1

PhpStorm

よくわかんなかったんで適当にやった・・・

image.png

image.png

image.png

image.png

image.png

3
3
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
3