Docker + PHPStormにxdebugのデバッグ環境を構築(PHP7.4、PHP7.1未満にそれぞれ対応)

プログラミング

PHPのバージョンにあったXdebugをインストール

PHP7.4(xdebug3系)

# xdebugの最新版をインストール
pecl install xdebug

# php.iniにリモートデバッグ設定を追記
vi /usr/local/etc/php/php.ini

php.iniのファイルの末尾に以下を追加

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9000
xdebug.idekey = PHPSTORM

PHP7.1未満

# PHP7.1未満に対応しているバージョンのxdebugをインストール
pecl install xdebug-2.5.5

# php.iniにリモートデバッグ設定を追記
vi /usr/local/etc/php/php.ini

php.iniのファイルの末尾に以下を追加

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = 9000
xdebug.remote_host= host.docker.internal
xdebug.idekey = PHPSTORM

PHPSTORMのリモートデバッグ設定

PHP Remote Debug設定

  1. メニューバーの Run > Edit Configurations を選択する
  2. +マーク > PHP Remote Debugを選択する
  3. 画像の黄色枠のところにphp.iniのxdebug.idekeyに設定した値「PHPSTORM」を入力する
  4. 赤枠の個所をクリックするとサーバー設定画面が開くため、次の「Server設定」のステップに進む

Server設定

  1. +ボタンを押して設定を追加する
  2. 各項目に設定を入力する
    1. Host:DockerのWEBサーバーに対して設定を行うためローカルホストアドレスを示す「127.0.0.1」を入力
    2. Port:WEBサーバーのポート番号を入力(ポート番号がわからない場合はDockerでバインドしているポート番号を確認)
    3. Debugger:Xdebugを選択
    4. Use path mappings:チェックを入れてパスマッピングを行う
      (例)PHPSTORMで参照しているコードのパスがC:\Users\admin\PhpstormProjects\sample
      DockerのPHPサーバーに配置されているコードのパスが/var/www/sampleの場合、
      以下の画像のように設定する

接続確認

上記の設定が完了したらメニューバーから Run > Debugを選択し、作成した設定を選択してデバッグを開始。

Run > Break at first line in PHP scriptsを選択した状態でWEBサーバーにアクセスし、ブレークすれば設定完了です。

ブレークしない場合に確認すること

  • ファイアウォールでXdebugのポートが開いているか確認
    • Settings > PHP > DebugのXdebug項目の「Debug port」が開いているかチェック
  • php.iniのzend_extensionに設定されているパスが正しいか確認
    • lsコマンド等でファイルが存在するかチェック
    • 存在しない場合はphp.iniに正しいファイルパスを指定する

コメント

タイトルとURLをコピーしました