ニューヨークでITにお困りの際は、ぜひ美頼ITソリューションズにお問い合わせください。

5月
10
2011

Eclipse+PHPEclipse+XDebugで既存PHP Webアプリを開発・デバッグ

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

ここでは、EclipseやApache、PHPの知識はある方が読む前提で書いていきます。

対象はWindows、XPと7で試しています。

既存のPHP WebプログラムをEclipseで管理できるようにしたい場合を
前提としているので、プロジェクトの置き場所と、プログラムの実体の置き場所は
分けています。つまり、プログラムの置き場所に、Eclipseメタファイルなどのゴミを
置きたくないわけです。

========================================
Eclipse本体
========================================

http://www.eclipse.org/

Eclipse本体だけではいろいろと機能面で足りない部分があるのですが、追加機能を
入れるに時はバージョンごとの相性が悪い場合があり、これをいちいち検証するのは
面倒です。
そこで、今回は必要な機能がパッケージになった日本語環境Pleiades All in Oneを
採用します。なのでここでは何もダウンロードしません。

========================================
Pleiades 日本語化パッチ
========================================

http://mergedoc.sourceforge.jp/

現在、PHPEclipseはEclipse 3.4(Ganymede)までしか正式対応していないので、
「Eclipse 3.4 Ganymede Pleiades All in One」
を選択します。

次のページでPHPのダウンロードを選択したいところですが、実はPHP版を選択すると
あとでハマります。このPHP版にはPDTがすでに含まれていて、なぜかこれをあとから
アンインストールすることができないのです。
そこで、ここではもっともPHP版に近いC/C++版を選択します。

JREあり版とJREなし版がありますが、すでにJava環境があれば不要です。
以下で確認します。
C:\Program Files\Java

また、JREなし版だと、Webサーバーなどもついてきません。
ここではすでに動作しているApacheサーバーとPHP5があると仮定して進めます。
なので、C/C++のJREなし版を選びます。

========================================
PHPEclipse
========================================

http://www.phpeclipse.com/

今回の本命です。
最もよく使われているEclipse用PHP開発環境のPDTは、最新のEclipse 3.6にも対応
していますが、エラー検出などの機能が貧弱です。
Visual Studioなどの洗練された開発環境に慣れてしまっている若いプログラマー
たちにとっては、開発効率の著しい低下を招くでしょう。
そもそも、PHPの開発をテキストエディタだけでやっていては効率が悪いから
という理由でEclipseに乗り換えるのですから、ここは開発環境を最高の状態まで
引っ張りあげたいところです。

現在、私が知っている開発環境で、最もハードルが低くもっとも高性能なのが
PHPEclipseです。

上記URLから「1.2.3 Binary Download」リンクからPHPEclipseを取得します。
実はこのファイル、インストールするときはネットから直接インストールになるので
ここでダウンロードしても使わないんですが、どうも直接インストールが不安定
(開発元のWebサイトの説明が間違っていたり・・・)なので、念のため保管しておく
目的でのダウンロードとなります。

========================================
XDebug
========================================

http://xdebug.org/

PHPEclipseは、かなり普及しているDBGというデバッガとも接続できますが、
このDBG、2007年で開発がとまっていて、PHP5.2までしか対応していません。
これではお話にならないので、XDebugを採用します。

上記URLから「download/SVN」へ行き、Xdebug 2.1.1 の適切なバージョンを
ダウンロードします。「TS」というのはスレッドセーフ(Thread safety)のことで、
これはphpinfoを見ればわかります。(phpinfoがわからない場合はググって
ください。。。)

========================================
ファイルの解凍
========================================
ファイルを解凍するときは、以下に注意します。
・eclipse 3.4には、とてもファイルパスが長くなるファイルが入っています。
なので、どこかのドライブの「ルートに」展開します。
デスクトップとか、フォルダの中に解凍すると、のちのちトラブルになります。
参考:Windows 上で zip を解凍するときの注意:http://mergedoc.sourceforge.jp/

・他のファイルは適当に解凍します。

========================================
Eclipseの設置
========================================
Eclipseにはインストーラーがありません。
解凍した中に入っているeclipseフォルダを、どこかのドライブのルートに
設置するだけです。eclipseフォルダの名前は変えてもOKです。

私は今回、eclipsePHPと名づけて、Cドライブのルートに置くことにします。
c:\eclipsePHP

========================================
EclipseにPHPEclipseをインストール
========================================
c:\eclipsePHP\eclipse.exe を実行します。

ワークスペース・ランチャーが起動しますが、今は関係ないので、何も変更せず
OKします。

プラットフォームが立ち上がるので、ここからPHPEclipseをインストールしていきます。
参考サイト:http://www.phpeclipse.com/wiki/Installation

[ヘルプ]-[ソフトウェア更新]
使用可能なソフトウェアタブを選択。
[サイトの追加]をクリック。
ロケーションに、以下のURLを指定し、[OK]

http://phpeclipse.net/update/stable/1.2.x

※このURL、上記の参考サイトの情報は間違っています。(5/10/2011)
一覧に表示されるURLが増える。
以下のURLの左端にある矢印をクリックし、ツリーを展開表示。

http://phpeclipse.sourceforge.net/update/stable/1.2.x

PHPEclipse Stable Buildsの左端にある矢印をクリックし、ツリーを展開表示。
次のとおりチェックを入れる。DBGに入れないように注意。
[  ]DBG Debug Feature
[V]PHPeclipse Web 開発
[V]XDebug Feature
[インストール]をクリック。
インストール準備ができると、「インストール」という確認画面が出るので、
[次へ]、[使用条件の条項に同意します]、[完了]
インストール中、「証明書を信頼しますか?」と聞かれるので、Eclipse Foundationに
チェックを入れて、[OK]。

で、インストール完了するはずです。
インストール完了後、再起動を勧められるので、[はい]。

再起動時、ワークスペース・ランチャーが起動しますが、今は関係ないので、
何も変更せずOKします。

PHPのパースペクティブを開きます。
[ウインドウ]-[パースペクティブを開く]-[その他]-[PHP]-[OK]
画面右上を見ると、PHPのパースペクティブが開いているのがわかります。
「C/C++」パースペクティブはいらないので、右クリックしてとじてしまいます。

最後に、PHPのパースペクティブをデフォルトに設定します。
[ウインドウ]-[設定]-[一般]-[パースペクティブ]
選択可能なパースペクティブで、PHPを選択し、[デフォルトに設定する]-[OK]

========================================
XDebugのインストール
========================================
最初に、DBGプラグインが入っていないことを確認します。
[ヘルプ]-[ソフトウェア更新]で、[インストール済みのソフトウェア]タブを開く。
リストにDBGが入っていないことを確認。
XDebug Featureが入っていることを確認。

・Apacheのリモートソースパス確認
Apacheのhttpd.confに設定されているドキュメントパスを確認します。
※複数設定されている場合は、今回対象としたいパスを確認。
例:DocumentRoot “C:/Program Files/Apache Group/Apache2/htdocs”
これをリモートソースパスと呼ぶことにします。これをメモしておきます。

もしAlias設定をしている場合は、Alias側を採用します。
Alias /project “/var/www/workspace/project/”
の場合、/project。

・ワークスペースの作成
Eclipseを起動します。(開いていたら一度閉じます)
ワークスペースに、自分が作業フォルダとしたいフォルダを指定します。
たとえば、「c:\workspacePHP」など。
ここでの相対パスは、eclipse.exeからみた相対パスになります。

・XDebugの設定
ダウンロードしたXDebugを、適当に解凍します。
中に入っているdllファイルを、PHPのextフォルダにコピーします。
今回の場合は、php_xdebug-2.1.1-5.2-vc6.dllとします。
php.ini(通常、Windowsフォルダ内)をエディタで開き、[zend]のセクションに
以下の記述をします。(他の記述はコメントアウトします)

[Zend]
zend_extension_ts = “C:\php\ext\php_xdebug-2.0.0-5.2.2.dll” ;XDEBUG
xdebug.remote_enable=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_host=192.168.1.100
xdebug.remote_port=9000
xdebug.remote_mode=req

あと、以下の変更を入れたほうがいいという話もあります。
;implicit_flush = Off
implicit_flush = On

Apacheをリブートします。

リブート後、phpinfoに、xdebugのセクションが追加されていたらOKです。

だめな場合、以下にアクセスして、phpinfoで表示された内容のソースコードを
そのまま貼り付けて「Analyze my phpinfo」すれば、原因を調査してくれます。

http://www.xdebug.org/find-binary.php

========================================
テストプロジェクトの作成
========================================

・テストプログラムの配置
Webのドキュメントルートに、テスト用のフォルダを作成します。
ここでは例としてdebugtestという名前のフォルダを作ります。
フォルダの中に、index.phpを作って、以下のコードを入れます。
<?php
print “This is a test.”;
print “Is XDebug working well?”;
?>

まずは、上記コードが正しく動作することを確認するため、http://localhost/debugtest
にブラウザからアクセスしてみてください。

・プロジェクトの作成
Eclipseを起動します。ここではc:\workspacePHPを指定します。
左上の「新規」ボタンの右の矢印を押して、[PHPプロジェクト]。
新規PHPプロジェクトダイアログが出ます。
プロジェクト名:debugtest →[完了]
左ペインに作ったプロジェクトが出る。

・プロジェクトに、PHPのソースが入っているフォルダを参加させる。
左ペインにあるプロジェクトを右クリックして、[新規]-[フォルダ]
[拡張]ボタンを押す。
[ファイルシステム内のフォルダーにリンク]をチェック。
[参照]ボタンを押し、Webのドキュメントルートに作ったdebugtestフォルダを
指定し、[OK]、[完了]
うまくフォルダが追加されたかどうか確認するため、プロジェクトの下にできた
debugtestフォルダを右クリックして、[プロパティ]。
ロケーションが意図したフォルダになっていればOK。
※実際のプロジェクトでは、すでにこのフォルダにプログラムがたくさん入っている
場合があるので、その場合はここでテキストファイルエンコードを適切に選択。

・ブレイクポイントの設置
index.phpをダブルクリックしてオープンし、
print “This is a test.”;
の行の左端、グレーのエリアを右クリックして、[Toggle XDebug Breakpoint]
(もしくはダブルクリックでもよい)。
すると、ブレークポイントを示す青丸が表示される。

・サーバー環境の設定
コマンドボタンエリア中ほどにある虫ボタンの右の矢印をクリック、[デバッグの構成]
[PHP XDebug Remote Script]をダブルクリックして、新規構成を表示させる。
名前をtestdebug Remote
メインタブ、プロジェクトがdebugtestになっていることを確認。
メインタブ、Ide Identfication String:を適当に設定。あとで使う。
Pathmapタブ、[新規]でEdit File Mapを開く。
Local_Pathは、Webのドキュメントルートを指定。
Remote Pathも、Webのドキュメントルートを指定。
これは、Apacheのリモートソースパス+作ったフォルダ名になっているはず。
[OK]
[適用]
[デバッグ]
ここでファイアウォールの警告が出たら、アクセスを許可。

実はこの時点でデバッグが始まっている。

・デバッグパースペクティブをあける
ウィンドウ右上のパースペクティブエリア(すでにPHPパースペクティブボタンが表示
されているはず)にある、パースペクティブ追加ボタンから、デバッグを表示し、
デバッグパースペクティブに移行します。

・実行
ブラウザを開き、http://localhost/debugtestにアクセス。
対象のページが表示される。
ここで、URLに、「?XDEBUG_SESSION_START=ID」をつけます。
IDは、さっき決めたIde Identfication Stringです。デフォルトだと、testIDなので、
以下のようなURLになります。

http://localhost/debugtest/?XDEBUG_SESSION_START=testID

Eclipse側では、ブレークポイントでとまっているはず。
これで成功です。

再開ボタン(デバッグエリアのあたりにある黄色と緑の矢印ボタン)を押すか、
キーボードのF8を押すと、次に進みます。

ブレークポイントを2行目に設置して、再度ブラウザでページを読み込むと、2行目
でもとまるはずです。
このとき、2行目でとまったタイミングでは、1行目のコマンドは実行されているので
1行目の表示はブラウザ上に出ているはずです。

あとは自分でいろいろ試してみてください。

この記事よかった!の時、2つ投票押してください→人気ブログランキングへ
Written by hitomi in: テクニカル |

コメントはまだありません »

RSS feed for comments on this post. TrackBack URL


Leave a Reply

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com