こんにちは。カイザーです。XdebugをLaradockで使用する方法について、まとまった記事が少なかったため、まとめてみることにしました。
まず、Laradock側でXdebugを起動させるため、コンテナ内の設定ファイルを変更します。
Laradock内の「php-fpm/xdebug.ini」「workspace/xdebug.ini」を修正します。
xdebug.remote_host= host.docker.internal ; dockerhostでは接続できないため注意 xdebug.remote_connect_back=0 ; 1だとxdebug.remote_hostを無視し、ブラウザのIPにアクセスしてしまうため、0に。 xdebug.remote_port=9001 ; デフォルトの9000だとphp-fpmとポートが被るため、9001とする xdebug.idekey=PHPSTORM xdebug.remote_autostart=1; ブラウザアクセス時に自動的にXdebugをスタートする。 xdebug.remote_enable=1; リモートデバッグを有効にする xdebug.cli_color=1 xdebug.profiler_enable=0 xdebug.profiler_output_dir="~/xdebug/phpstorm/tmp/profiling"
Laradockの.envファイルを修正し、Xdebugを有効化します。
PHP_FPM_INSTALL_XDEBUG=true WORKSPACE_INSTALL_XDEBUG=true
設定できたら、コンテナを再構築します。
$ docker-compose up --build nginx mysql workspace
次に、PHPStorm側でリモートデバッグの設定をしていきます。
Laradockに接続するため、Dockerの設定を先に行います。
「+」で新規追加し、 Docker for Mac
を選択。
「Connection Successful」と表示されればOKです。
PHP関係のパスを通します。
Dockerコンテナ内のプロジェクトのパスと、ローカルプロジェクトパスを関連づけます。
■CLI Interpreter
「…」をクリックし、 From Docker, Vargrant, VM, Remote...
を選択し、以下設定で新規追加し、それを設定します。
■Docker container
フォルダアイコンをクリックして、開いた画面の編集ボタン(鉛筆)をクリックし、以下設定します。
/var/www
(laradockの .env
ファイルの APP_CODE_PATH_CONTAINER
に記載されているパス)app
ディレクトリのある位置)Debug portを「9001」に設定します。(xdebug.iniで設定したポート番号です。)
Xdebug受け入れ用のサーバ設定を行います。
/var/www
(laradockの .env
ファイルの APP_CODE_PATH_CONTAINER
に記載されているパス)PHPStormでデバッグを有効にするための設定です。
まず、Run/Debug Configurationsを開きます。
「+」から PHP Rmote Debug
を追加し、以下のように設定します。
電話アイコンをクリックし、虫アイコンをクリックすると、デバッグが開始されます。
その後、ブレークポイントを設定した上で、該当箇所をブラウザでアクセスすると、ブレークポイントに引っかかります。
PHPStorm+Xdebugを使うと、ネイティブアプリのようなデバッグ環境を作ることができました。
PHPはデバッガなしでも開発できますが、Laravelなどのフルスタックフレームワークを使用していると、どうしてもデバッガを置きたいシーンが良くあります。
ぜひ、参考にしてみてください。