5
3

More than 3 years have passed since last update.

PHPStormとdocker上のxdebugとの連携に詰まったら。トラブルシューティング

Posted at

これはなに

PHPStormとdocker上のxdebugを連携したいケースで、
「なんで繋がんないんだよ!!」ってなったので、
ヒントになることを書きます。

Xdebugとは?

Xdebugとは高機能なPHPのデバッグツールです。 PHPのデバッグでおなじみの「var_dump」を見やすくしてくれたり、ボトムネックになっている処理を見つけたり、ステップ実行できたりします。 その他のデバッグツールとしてはZendDebuggerがあります。
Xdebugを使い倒す5つのTIPS | スマホサイト・アプリをつくろう。
より。

ログを有効化する

xdebug.iniやphp.iniに設定を追加しましょう。
追加したらnginxやapacheの再起動が必要です。

xdebug.remote_log=/tmp/xdebug.log

/tmp/xdebug.logにログが表示されますので、
出力されたエラー内容を見て、原因を特定しましょう。
ググれば関連する情報が出てきます。
ログを見ないで疎通させようとするのは、地図を持たないで山に入るようなもんです。

そもそもxdebugの設定が読み込まれているか?

xdebugの設定を記載してもxdebugが動かない、ログも出ないときは
phpに設定が読み込まれているか確認しましょう。
xdebug.soの読み込み忘れでxdebugが動いていなかったり、
別のファイルで設定が上書きされていた、なんてこともありえます。

下記のコマンドは、phpに読み込まれている設定値を出力するものです。
xdebugが有効になっている場合は、xdebug関係の設定がいくつか出力されます。

php -r 'phpinfo();' | grep xdebug

| grep xdebug の部分は絞り込みをしています。

PHPStorm上のPath Mappingが設定されているか?

docker上のファイルパスと、ローカルPC上のファイルパスのマッピングを設定する必要があります。

スクリーンショット_2020-08-30_17_18_06.png

index.phpにブレークポイントを設定する

ブラウザからアクセスされた時に必ず実行されるところにブレークポイントを貼ってみましょう。
laravelだとpublic/index.phpです。
これで、xdebugが動いていないのか、ブレークポイントの追加する場所が悪いのか原因の切り分けができます。

以上、参考になりましたら幸いです。

参考

https://qiita.com/haruna-nagayoshi/items/99fa041e884c2c3975d2
https://qiita.com/castaneai/items/d5fdf577a348012ed8af
https://qiita.com/taniai-lvgs/items/8e9eba112d2d0ed2530f

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