(Xdebug 2系は設定が異なるので注意。IDE側の設定も変わっている)
php.ini
のxdebugの設定は以下の様にする。
最低限必要なのは以下の通り。
xdebug.mode=debug
xdebug.discover_client_host=true
以下を忘れずに設定する事
- パスマッピングの設定(
ctrl + alt + s
-> PHP -> Servers -> Use path mappings ...) - デバッグ接続の許可(ウィンドウ左上のアイコン)
- 待ち受けポート番号を9003に設定する(xdebug2から変わっているので注意)
(TODO 画像)
PhpStormでctrl + alt + s
で設定を開く
Language & Frameworks
-> PHP
-> CLI Interpreter
(右の...
ボタン) -> Additional
-> Configuration Option
キー: xdebug.client_host
(xdebug2から変わっているので注意)
値: 10.0.2.2
(Windows + VirtualBoxの場合)
それ以外の環境の場合はhost.docker.internal
か172.17.0.1
でつながるかも。
デバッグを行うケースは以下3パターンある。
- ブラウザからWebサーバに接続する場合
- コマンドラインからPHPを実行する場合
- phpstormからユニットテストを実行する場合
それぞれ詳しくみていく。
remote_autostart
がOFFなので単純に画面を開くだけではデバッグは開始しない
URLのパラメータとしてXDEBUG_SESSION_START=xxx
を付けてやる必要がある。
https://ドメイン名/パス?XDEBUG_SESSION_START=xxx
単純にコマンドを実行するだけではデバッグは開始しない
以下のように環境変数を設定してからphp
コマンドを実行する必要がある
export PHP_IDE_CONFIG="serverName=[Server Name]"
export XDEBUG_CONFIG="idekey=[dummy] client_host=172.17.0.1"
php [デバッグ対象のコマンド]
[Server Name]
にはPHPStormのPHP > Serversで定義されているサーバの名前を指定する
[dummy]
はたぶんなんでも良い。でも指定しないとデバッガが起動しない。
-d memory_limit=...
は無くてもいいが、Killedと表示されて途中で落ちてしまう場合は付与する。
--timeout=0
を付与してタイムアウトを回避する
php artisan queue:work --queue=sync --timeout=0