まえおき
以前書いた記事で、Xdebug3の設定がうまく行かず、
ブレークポイントが止まらないためXdebug2にバージョンダウンさせ回避する。という記事を書きました。
当時はエラーログにも残らず何をして良いかわからない状態でした。。
しかし、やっとXdebug3の設定でうまくブレークポイントが止まってくれたので備忘録として残しておきます。
環境
CentOS 7
Apache 2.4
PHP 7.2
Xdebug 3
Xdebugのインストール
最新のXdebug(Xdebug3)をインストールします。
インストールはPeclで実行しました。
※ PeclはPHPのパッケージ管理システム
$ pecl install -a xdebug
インストールに関してはこれだけです。
extension_dir(/usr/lib64/php/modules/)にxdebug.soファイルが生成されているはずです。
備考
・extension_dirはphp.iniやphpinfoで確認できます。
・Peclコマンドが実行できない場合、以下を導入すればコマンドが実行できるようになるはずです。
$ yum install php-devel
$ yum install php-pear
・Peclについて参考リンク
・Peclでインストールしたアプリケーションのアンインストール
Xdebug3の設定
iniファイルに追記
php.iniの最終行、または/etc/php.d/にxdebug.iniを作成して以下を追記しましょう。
[XDebug]
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.mode=debug
xdebug.discover_client_host=1
xdebug.client_host=localhost
xdebug.client_port=9000
xdebug.start_with_request=yes
;xdebug.log=/tmp/xdebug.log
設定値について
zend_extension
xdebug.soのファイルパスを指定します。
xdebug.mode
Xdebug2での以下記述がxdebug3ではxdebug.mode=debugの一行でまとまるようです。
xdebug.remote_enable=1
xdebug.default_enable=0
xdebug.profiler_enable=0
xdebug.auto_trace=0
xdebug.coverage_enable=0
xdebug.discover_client_host
PHPにアクセスした側の IP アドレスに自動的につなぎにいってくれる機能が「discover_client_host」です。
※ 私事ですが、この設定が足りてなくて接続に失敗しており、追記することで疎通することができました。
※ xdebug2の「remote_connect_back」に変わるようです。
xdebug.client_port
Xdebug3ではデフォルトのポートが9003になるようです。
phpstormのデフォルトのデバッグポートが9000だったので9000に合わせるため定義しました。
ここら辺は適宜値で設定してください。
xdebug.start_with_request
デバッガーを自動で開始する設定です。
xdebug2で言う「xdebug.remote_autostart」の設定の変わりとなるようです。
xdebug.log
Xdebugログの吐き出し設定です。必要に応じて設定してください。
※ サンプルではコメントアウトしてます。
設定の反映
Apacheを再起動します。
$ systemctl restart httpd
PHP-FPMを導入している場合以下も実行しておきましょう。
$ systemctl restart php-fpm
確認
あとはPhpStorm側が然るべき設定になっていればブレークポイントで止まってくれるはずです。
※PhpStorm側の設定は以下記事で紹介してます。
参考
Xdebugドキュメント
設定について参考にさせて頂いたサイト様