yasutomogのブログ

Software Engineerの雑記

PHP(ZTS)のxdebugインストール

概要

  • 同じチームのエンジニアが新しいプロジェクトに参画し、既に作成済みのDocker環境にxdebugを入れようとしたところ、うまく動かないという相談を受けて調査開始
  • peclコマンドでxdebugをインストールして設定しているが、確かに動かない、、、

結論

  • Docker環境のPHPは、ZTSで動いていたため、peclコマンドいれたxdebugは動作しない
  • ZTS用のxdebug.soを、自分で作ってあげる必要がある

ハマリポイント

  • peclコマンドでインストール後、以下のコマンドで確認をしていた。

      php -r "phpinfo();" | grep xdebug  
      php -v 
    
  • 上記コマンドだと、xdebugがちゃんと入っているように見えるため、最初はリモートデバッグ接続しようとしているVSCode側の設定とかを疑って時間がかかった。

  • Webブラウザから、phpinfo();出力したページを表示して、xdebugの設定が反映されていないことを確認できたので、ここからPHP側を疑って調査した。

解決方法

wget http://www.xdebug.org/files/xdebug-3.1.5.tgz
tar xzvf xdebug-3.1.5.tgz
cd xdebug-3.1.5/
zts-phpize
./configure --with-php-config=/usr/bin/zts-php-config
make
make install
  • 上記コマンドを実行すると、xdebug.soファイルが作成される
  • あとは、xdebug用のiniファイルを配置してあげる
zend_extension = "make installの出力先/xdebug.so"
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.log=/tmp/xdebug.log
xdebug.log_level=0