EclipseでPHPコードをXdebugで、デバッグしたい(けどできない!)
「なんで!」
となったときのチェックする順番について書いてみました。
- XAMPPのPHP7でのxdebugはこちら読んで下さい、DLL配布、php.ini設定あり https://gist.github.com/odan/1abe76d373a9cbb15bed
環境
- Windows10
- Xampp
- xdebug
- Eclipse
その前に、xdebugのライブラリは入ってますか?
標準では入っていない環境もありますので、まず、存在を疑って下さい。
- どのバージョンのxdebugをインストールしたらよいかを公式サイトで判定できます => https://xdebug.org/wizard.php phpinfo()の結果をペーストしてボタンを押すと推薦してくれます。
- phpinfo() にXdebugが表示されているか?
表示されていなかったら、php.iniで有効にすること(ポート番号も見ておこう)
筆者の設定↓
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_host = "localhost"
xdebug.remote_port="9000"
- xdebugはTCPで通信します。php.iniで設定しているポートが空いているかどうかチェック。デフォルトの9000番が環境によっては空いていないことがあるようです。素直にちょっとずらして9001とかでいけると思います。
空いていなければ別のポート番号にします
空いているかどうか調べるコマンドは netstat -nao
Windowsで使用ポートを確認(外部サイト) - Eclipseのxdebugのポート設定が2番のphp.iniで設定されているポートと同じかチェック
- ファイヤーウォールなどで上記のポートがブロックされていないか調べる。
閉じられていたらルールを作成する
コントロールパネル>ファイヤーウォール>詳細設定
以上で何とかなると思います。
反省
ちなみに1のphp.iniでつまづいていました。php.iniがうまくいってるものと思い込み、ポート重複チェックばかりしていました。
php.ini設定は前にしっかり書いておいたので問題ない!と思っていたのは別の環境で、思い込みによる勘違いでした。
というわけで、時間ロスをなくすためにも問題を検品するときのチェックの順番って重要だなと思い、このページを作りました。
なぜ、ポート重複からチェックしてしまったかというとググっででてきた上位何個のページが、「xdebugが動作しないのはポート重複指定」のコンテンツだったため、はなから自分の場合ものそれだと思い込んでしまっていたのですね。