2008年4月20日日曜日

PHP の開発環境を整える (2008.4) - XAMPP, PDT, デバッガ

1. XAMPP を利用する

去年(2007.3)、PHP の開発環境を整えた。あれから一年以上経過したので、再度、開発環境を構築する。

以前は、IDE に PHPEclipse を使い、 Apache, PHP, MySQL を個別にインストールした。今回も個別にインストールすべきか、それとも XAMPP を利用すべきか迷うところ。個別にアプリケーションをインストールすれば、コストはかかるけれど、知識が得られる。

XAMPP の構成は、apache friends - xampp for windows によると、

    • Apache 2.2.8 + OpenSSL 0.9.8g
    • MySQL 5.0.51a
    • PHP 5.2.5 & PHP 4.4.8
    • phpMyAdmin 2.11.4
    • FileZilla FTP Server 0.9.25
    • Mercury Mail Transport System v4.52

[ThinkIT] 第4回:5分でわかるXAMMPの導入事例 (1/3) によると、

多くの企業の担当者たちは、容易なインストールや運用保守の簡易性だけでなく、各種アプリケーションのバージョンをあげる際のマイグレーションのしやすさに着目し、XAMPPの普及が非常に早いスピードで進みました。
   特に小規模のサーバが対象であれば、XAMPPのみで運用を行っている企業はかなりの数に上ります。これに対して、クラスタリング構成を取ることの多い中・大規模なサーバ運営ではXAMPPのみで管理を行えなくなってくるため、このような分野では導入数は少なくなりますが、場合によってはステージング用途として利用されることもあります。
   また最近では、組み込みパッケージのプラットフォームの一部にXAMPPが使われるケースも見られるようになりました。

(太字、下線は引用者による)

今回は、XAMPP を利用することにした。

 

XAMPP のインストールと起動

apache friends - xampp for windows から、インストーラ をダウンロードして、D:\xampp にインストールした。

しかし、XAMPP コントロールパネルアプリケーションから、Apache を起動しようとしたが、出来ない。(@_@;)

こころあてに・・・ - Apacheが起動しない・・・ XAMPP試してみました によると、

[Apache skype]でネットで検索してみました。原因はひょっとしてSkypeがポート80を占拠 Apacheが起動でエラー←コレですか?マジですか?

Skype において、

  • ツール > 設定 > 詳細 > 接続 の「上記のポートの代わり、ポート80を使用

のチェックをはずした。

再度、Apache を起動してみたら、今度は OK 。

http://localhost にアクセスして動作を確認。

 

2. IDE に PDT

PHP のための IDE として、Eclipse プロジェクトで開発されている PDT を利用する。

PDT 1.0.2 は、設定がわからず諦めた

PDT ProjectDownloads から、R20080103pdt-all-in-one-R20080103-win32.zip をダウンロード。

解凍して、起動。適当に PHP Project を作成し、

を参考にして、設定を行った。

  • Windows > Preference... > PHP > PHP Excecutables

で、Executable Path を設定。

Name は、XAMPP でインストールした PHP のバージョンを付けておいた。

Image4

次に、HP Servers の設定でハマった。EclipseでPHP開発環境を作る - 設定 - delab で説明されている PDT と、自分が使っているもののバージョンが違うため、設定画面が異なっていた。

このサーバーへプロジェクトを公開

という項目がなくなっている代わりに、

Path Mapping

というタブが追加されている。

PHP のソースは D:\develop\workspace 内に置き、Apache が、workspace 内のプロジェクトを認識するような設定を、簡単にできると考えていた。しかし、設定できない。どうやるのだろう?

とりあえず、 D:\xampp\htdocs 内に Eclipse のプロジェクトを置けば、実行できる。しかし、できればソースを htdocs 以下とは別の場所で管理したい。 PHPEclipse を使ったときのように、 Apache の httpd.conf を変更する方法しかないだろうか?

Tutorial: Install a PHP Development Environment with Eclipse PDT, Apache 2.2, PHP 5, MySQL 5, and phpMyAdmin Using XAMPP Lite の 11 で説明されている方法も、

Set the workspace to C:\xampplite\htdocs\webs ,

うーむ... (@_@;) この問題について、考えるのは後回しにしよう。ちなみに上記の同サイト内には、PHPEclipse を使った設定の方法が書かれていた。 QQQ

 

PDT 1.0 を利用することに

最新のバージョンでは設定がわからなかったので、一つ前のものを使うことにした。これなら、EclipseでPHP開発環境を作る - 設定 - delab の説明に従って設定を行うことができる。

1.0.2 Release Build: R20070917 より pdt-all-in-one-1.0-R20070917-win32.zip をダウンロードしなおして解凍。

  • Windows > Preference... > PHP > PHP Excecutables

を設定。

Image5

  • Preference... > PHP > PHP Servers

で、ワークスペースに作成した PHP ファイルを、 Apache の htdocs 以下の test フォルダにおいて実行できるように設定した。

Image6

 

Server の設定と、PHP の実行の対応付け

Server の設定は複数作成することができる。複数の PHP プロジェクトがあった場合、それぞれ対応付けることができそう。

例えば、hoge という名前の設定を新しく作ったとする。

Image7

上記の設定を利用するには、PHP Explorer において、実行したいファイルで

  • 右クリック > Run as > Open Run Dialog

を選択する。以下のように、PHP Web Page の設定において、 Server の設定の PHP Server を先ほど作成した hoge にする。

Image8

この設定を適用して実行すると、htdocs の hoge フォルダで実行されるようになる。

追記(2008.4.21): [XAMPP+Eclipse PDT] WindowsでPHP開発環境[文系大学的IT系の悲哀] によると、PHP Server のデフォルトの設定に、ドキュメントルートを設定すればいいとのこと。また、Test というプロジェクトを作成し、そこに test.php を置いた場合、デバックをするときの設定として、以下のようにする。

File/Projectのところには/Test/test.phpを指定。Publish files to Serverにチェックを入れて、Publish to:の末尾にTestと加える。そして、Debugをクリック。

これにより、複数の PHP Server の設定を作らなくても、実行時やデバッグ時の設定をするだけで済む。

 

デバッガのインストール

Tutorial: Install a PHP Development Environment with Eclipse PDT, Apache 2.2, PHP 5, MySQL 5, and phpMyAdmin Using XAMPP Lite の 13 を参考にした。

  1. Help > Software Updates > Find and Install を選択。
  2. Search for new features to install を選択して、Next 。
  3. New Remote Site ボタンを押して、Name: PDT Debugger, URL: http://downloads.zend.com/pdt を入力する。
  4. PDT Debugger がチェックされていることを確認し、Finish ボタンを押す。
  5. Update Site Mirrors ダイアログが表示されるので、Automatically select mirrors にチェックをつけて、OK ボタンを押す。
  6. Updates ダイアログが表示されたら、PDT Debugger にチェックを入れて、Next 。
  7. 後は、指示に従ってインストールを進める。

しかし、デバッグしようと思い、実行したらエラーがでた。パタッ(o_ _)o~†

[Eclipse PDT (PHP Development Tool)] Q&A? によると、

ZendDebugger 5.2.10 は PDT1.0(R20070917)用.5.2.12 は PDT1.0.2(R20080103)用.

(太字は引用者による)

  • Help > Software updates > manage Configuration

を選択し、Zend Debugger Feature 5.2.12.v20071210 を

  • 右クリック > uninstall 。

再度、インストール作業をした。インストールの途中の画面で、

Show the latest version of a feature only

のチェックをはずし、Zend Debugger Feature 5.2.10.v20070905 を表示させ、選択してインストールした。

Image9

追記(2008.4.21): [Eclipse PDT (PHP Development Tool)] Q&A? によると、

PDT+Zend Executable Debugger Plugin でできること(非推奨)

  • PHP ファイルの編集
  • 拡張モジュールを一切使用しない PHP ファイルのコマンドベースでの実行・デバッグ

* 拡張モジュールは含まれていないので実使用には耐えません.

そこで、ZendDebugger-5.2.10-cygwin_nt-i386.tar.gz をダウンロードして解凍。

[XAMPP+Eclipse PDT] WindowsでPHP開発環境[文系大学的IT系の悲哀] によると、

中にある5_2_x_compというフォルダを、php-5.2.xという名前にリネームして、適当なところに置く。今回はZend Extension ManagerとZendOptimizerの隣(C:\xampp\php\zendOptimizer\lib)にDebuggerというフォルダを作り、その中にリネームしたフォルダを設置。

また、同上の説明に従い、環境に合わせて、D:\xampp\apache\bin\php.ini の [Zend] に以下を追加した。

zend_extension_manager.debug_server_ts = "d:\xampp\php\zendOptimizer\lib\Debugger"
zend_debugger.deny_hosts = all
zend_debugger.allow_hosts = 127.0.0.1/192.168.11.*
zend_debugger.expose_remotely = always

Apache を再起動し、 phpinfo() を見ると、Zend Debugger という設定内容が表示されるようになった。これにより、Eclipse の PDT プロジェクトの PHP ファイルで

  • 右クリック > Debug as > PHP Web Page

が動作するようになった。

 

デバッグの方法

を参考に。

Subversion の設定に続く...

 

関連記事

2コメント:

匿名 さんのコメント...

こんなにわかりやすく、自分がつまずいてる
ところを教えてくれて、お礼の言葉もないです。

PHP勉強する前に、環境を整えようと
して、文字化け、バージョン不適合
いままでできてたものまでおかしくなる、、
などで挫折、、今回もこの流れかと思い
ましたが、なんとかこれでできそう!!

ちなみにコードアシスタントが
PDTの最新バージョンでは
毎回ctrl+space をおさなきゃなのも
仕様ですかね><

Time さんのコメント...

Zend DebuggerとZendExtenはWindowXpで下記で動きました。

[Zend]
zend_extension_ts = "C:\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts = "C:\xampp\php\zendOptimizer\lib\Optimizer"
zend_optimizer.enable_loader = 0
zend_optimizer.optimization_level=15
zend_optimizer.license_path =
; Local Variables:
; tab-width: 4
; End:
zend_extension_manager.debug_server_ts = "C:\xampp\php\zendOptimizer\lib\Debugger\php-5.2.x"
zend_debugger.deny_hosts = all
;zend_debugger.allow_hosts = 127.0.0.1/192.168.0.*
zend_debugger.allow_hosts = 127.0.0.1
zend_debugger.expose_remotely = always