わかりやすい

主にIT関連や時事ネタの興味を持ったことを、なるべくわかりやすく書いてみようとおもいます。

スポンサーリンク

eclipseとxdebugを使った、リモートマシン上で動作するphpの開発・デバッグ

標記の件。メモ程度ですが、重要な点のみメモしておきます。 (例によって推測を含みますので、内容の精度は各自の責任にて。)

やりたいこと

上記を実現するためのアプローチ

xdebugを利用する際の障壁

  1. eclipseで編集するためのファイルがローカルマシン(eclipseを動作させているマシン)に無い
  2. xdebugを用いた真の(phpを実行するマシンとeclipseを実行するマシンが異なる構成での)リモートデバッグに関する情報が意外と少ない

以下、ここについてちょっと解説。

1. eclipseで編集するためのファイルがローカルマシン(eclipseを動作させているマシン)に無い

eclipseでファイルを編集したり、xdebug

これの解決策は2パターン。

要するにsshとかでリモートにあるファイルをローカルにあるように扱う。 ちなみに、私はこれはパフォーマンスの面で問題が出て、採用しなかった。 (プロジェクトの管理対象ファイル数が少ない場合とかはいけるかもしれない)

持ってきたソースコードEclipseのプロジェクトとして登録、 適切なデバッグ構成を設定すればとりあえずブレークポイントの設定とかステップ実行とかできるようになる。

問題はソースコードを編集した際の変更を実行マシンに反映させる方式。 自分のローカル(Eclipseを動作させている)環境はwindowsなので、winscpミラーリングアップロード機能を使うことにした。

2. xdebugを用いた真の(phpを実行するマシンとeclipseを実行するマシンが異なる構成での)リモートデバッグに関する情報が意外と少ない

はい、この記事を参考にしていただけると幸いです。 xdebugの動作概要はぐぐれば出てきますが、簡単に説明すると

これに尽きる。つまり、xdebugには以下を設定する必要がある。

具体的に書く内容は以下。

zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.remote_host = xxx.xxx.xxx.xxx

1行目はxdebugのモジュールを読み込んで、リモートデバッグ機能をphpに取り込む設定。 2行目はリモートデバッグ機能を有効にするかどうかの設定。 3行目はよくわかっていない。 4行目はデバッグ情報を送信する先のホスト名(要するにEclipseが動作しているローカルマシンのIPアドレス

上記の設定をphp.iniに書くと、リモートデバッグが行えるようになる。 apacheのDSOとして動かしているなら、php.ini(からincludeされている/etc/php.d/xdebug.ini)に上記を書いて、apacheをreloadする。 gracefulで反映するかどうかは未確認。

まとめ

eclipsexdebugを使った、リモートマシン上で動作するphpの開発・デバッグの環境について、必要な点を整理しました。 余裕があれば、上記を実現する具体的な手順も書いてみようと思います。