目標
- dockerコンテナ内でLaravelを起動する。
※ただし、コンテナ内のLaravelソースはローカルからマウントしている状態 - Larvelを
php artisan serve --host 0.0.0.0
で起動する - という状態で、ローカルのPhpStormでデバッグ(ブレーク)する
環境
- windows10
- Docker for Windows使用
- PhpStormのバージョンは 2019.2.1
- PHPのバージョンは7.3.8
Docker側設定
php.iniを下記の通り設定。
※
- xdebugは入っている前提。
- 細かい原理はわからないが、
xdebug.remote_autostart=1
を有効にするとダメ -
xdebug.idekey=PHPSTORM
はあってもなくても動くけど一応いれておく。。
[xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
; xdebug.remote_autostart=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
Laravelを php artisan serve --host 0.0.0.0
で起動する。
※
artisan使って起動するなよっていうツッコミはスルーする。
Nginx->php-fpm->Larvel でも多分同じなはず。。(まだ、試してないので不明
PhpStorm側設定
File > settings > Language&Frameworks > PHP > Debug
で↓にする。
※チェックボックスの入り方も大事なので注意。
注意
php.ini の xdebug.remote_port=9000
と、PhpStormの設定のポートは必ず合わせる事。
実行
この状態でPHPStormでブレークを張り、リクエストを投げると1、PHPStorm に Incomming...
というダイアログが表示されるので、何も変えずにAccept
すると、ブレークする。
※リクエストを投げる際には、↓をリクエストヘッダに付与すること。
Cookie: XDEBUG_SESSION=PHPSTORM
この後、File > settings > Language&Frameworks > PHP > Servers
を見ると、設定が追加されている。
恐らく、デバッグ情報を送ってきてる方(つまりDocker内のLaravel(つまりServer))の情報(+ローカルファイルとのマッピング)になっている。
関連リンク
-
DockerのLaravelのポートマッピングが、8888:8000となっているのであれば、
http://localhost:8888
へリクエストする ↩