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

5月
10
2011
2

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

ここでは、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: テクニカル |
6月
29
2010
2

Windows 8厳秘情報流出!大きく進化したその姿とは

Windows 8の情報、ついに流出して出てきましたね。

Microsoft KitchenでWindows8リーク

Microsoft KitchenでWindows8リーク

もともとは別のサイトでリークしたもののようですが、そちらは削除されてしまったようです。6月29日8時30分現在(東海岸時間)はMicrosoft KitchenというWebサイトに詳細が掲載されています。

どうも、NDA(情報非公開契約)が交わされたパートナー企業に配る目的の資料のようですが、Windows 8の具体的な構想がスライド形式で掲載されています。

Windows 8、最も注目すべき点は?

Windows 8の大きな特徴は、顔認証によるログイン、携帯電話のような超高速起動、HTC社製グーグル携帯のようなカスタマイズ性、携帯電話のように細かい電源コントロールによる節電などなど、魅力的なものが多々あります。しかしその中でももっとも目を引くのは、「Windows Store」です。

Windows Storeは、これまで近所のお店やネットショップで購入していたアプリケーションを、Windows公式オンラインショップから購入でき、一気にダウンロードからインストールまでやってくれるというものです。グーグル携帯のAndroidマーケットみたいな感じです。更新状況も一括管理されるので、アプリのアップデートを忘れていた!なんてことはこれでなくなりますし、不正なライセンスで動く海賊版アプリも激減するでしょう。ということは、アプリの価格もかなり抑えられてくることが期待できます。

グーグル携帯に大きく影響されたか?

こうやってみてくると、Windows 8の特徴の多くはグーグル携帯(Android携帯)、さらにHTC社製グーグル携帯のSENSEインタフェースに大きく影響を受けているようです。ついにコンピュータを携帯電話がリードする時代に突入したか・・・と思わされる出来事ですね。まあ、携帯電話がリードするというよりも、AppleとGoogleの戦いで健全な成長を遂げているスマートフォン市場に比べ、実質的にはWindows一色のパソコン市場が不健全だっただけかもしれません。それに携帯電話の基本技術はLinuxというパソコン用技術が根底にあるので、ユーザー視点では、「持ちつ持たれつだから、いいところを真似しあってください」といいたいところですね。

いつ消されるかわからないので、興味のある方は今のうちに。

Microsoft Kitchen – Windows 8 Plans Leaks

この記事よかった!の時、2つ投票押してください→人気ブログランキングへ
5月
05
2010
2

HTMLのFormへ、戻るボタン(Back)で戻ると内容が消える問題

今回はテクニカルな話題、備忘録がわりで。

WebサイトでFormを使っているとき、次のページに進んでから戻るボタンを押すことがあります。このとき、ユーザーはさっき入力した内容が画面に残っていることを期待するでしょう。しかし、実際にはFormの中身がもとに戻っている(消えている)ことが多々あります。

これ、Googleで検索しても「サーバー側ではどうしようもない」と言っているBLOGや掲示板が多いですが、そんなことはありません。

手元のFireFox(最新)で試したところ、Formにさっきの内容が残るかどうかは、HTTPヘッダーでキャッシュを許しているかどうかに依存するようです。Ajaxで内容を書き換えた状態が破棄されるかどうかも同様。サーバーによって、HTTPヘッダーを吐き出すときにキャッシュOKにするかNGにするかが、サーバー既定値として設定されています。それを「確実にキャッシュOK」にしてしまえば、問題が解決します。(すべてのブラウザがこの動作をするかどうかは要確認)

具体的には、PHPを有効にしておいて、HTMLの先頭にHTTPヘッダーを埋め込みます。

<?php header(“Content-Type: text/html; charset=utf-8″);
header(“Cache-Control: Private”); ?>

こんな感じですね。先頭じゃないと意味がありません、先頭じゃないとエラーが出ます。

charsetは実際に使っているcharsetをセットしましょう。

これでキャッシュしていいことになり、戻るボタンで強制的にリセットされるのを回避できます。

拡張子.htmlではPHPが動作しないサーバーもあります。その場合、拡張子を.phpにするか、.htmlでもPHPが動作するようにサーバーを設定しましょう。

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

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