2015-12-17

phpのxdebugでハマった話

phpのデバッグでNetBeans+xdebugを使おうとしたのですが

という感じで、デバッグできない状況になりました。

原因

原因はパスマッピングでした。

NetBeansで[プロジェクト・プロパティ]>[実行構成]で[詳細]ボタンを押下すると、[詳細Web構成]のダイアログが出るので、こちらに適切なサーバー・パスとプロジェクト・パスを設定します。

netbeans_xdebug_webconfig

今回、開発環境としてはホストOSにWindows、ゲストOSにUbuntuを使い、ゲストOS上にコードやWebサーバなどの実行環境を配置し、実際のコーディングと動作確認はホストOSからSamba、ブラウザ、HTTPクライアントを使って行うという構成にしています。 なので、サーバー・パスはゲストOS側(xdebugが動く方)のパスを設定し、プロジェクト・パスはホストOSから見たゲストOS内のコードが配置されているパスを指定すればOKでした。言われてみれば、ブレークポイントを配置したファイルと、実際に動いているphpファイルのマッピングが出来なければデバッグなんて出来ないですよね…。

ちなみに、Ubuntuだとxdebugのインストールと設定はこんな感じでいけます。

1. xdebugインストール

$ sudo apt-get install php5-xdebug

※web上で検索すると、peclでやっているケースがほとんどなんですが何故かうまくいかず…なのでaptで。

2. php.iniに以下を記述

[xdebug]
zend_extension="/usr/lib/php/20131226/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=10.0.2.2

※今回の場合はremote_hostはゲストOSから見たホストOSのIPアドレス

3. apacheリロード

$ sudo service apache2 reload

これでphpinfo叩いてxdebugがenableな感じになっていればOK。

このエントリーをはてなブックマークに追加