[PHP開発環境] PHPをデバッグする
2008.12.09 |Category …PHP
前回はPHP5にZendDebuggerを導入するところまで行った。
今回はいよいよEclipseでデバッガ起動をしてみる。
その前に、Eclipse側の設定を行う。
まず、Preferences -> PHPより Debugを選択する。

各設定項目を以下のように埋める。
PHP Debugger・・・Zend Debuggerf
Server・・・Default PHP Web Server
PHP Executable・・・localhost
エンコーディングはとりあえずUTF-8。

PHP DebuggerのConfigureアンカー。各デバッガで利用するポートの設定だろう。

ServerのPHP Serverアンカー。PHPを稼動させるためのWebサーバの設定を行う。
(注・いろいろ触ってるうちに先に作っちゃってたっぽい。本来はここではじめて行う設定かも・・・)

PHPサーバを選択してEdit。
Eclipse上で使う設定名とURIを入力。(http://localhost)

Path on ServerにPHP保存ディレクトリの絶対パスを入力し、Local Pathにワークスペース上のパス(プロジェクト名でOKか?)を入力する。

PHP Executableアンカーより、PHP実行ファイルのパスを設定する。
Nameは何でもOK。
Executable Pathはphp.exeへの絶対パス。
PHP ini fileはphp.iniファイルへの絶対パス。
テストによってphp.iniファイルを差し替えたいときは便利かも。
PHP debuggerはZend Debuggerを選択。
ここまで設定して、ワークスペースよりPHPファイルを選択してDebug -> PHP Script。
普通にデバッガが起動してステップ実行ができるようになりました。

きちんとサーバ環境変数も拾ってくれるしなかなかイイ感じ。
と、ここでふと思ったのだがApache起動してないじゃん。
ここでこんどはこのまま「Debug as PHP Web Page」を実行してみる。
今度はEclipse上でブラウザが起動して、案の定実行エラーになった。
更に、今度はApacheを起動した上で「Debug as PHP Web Page」を実行。
すると、同様にEclipse上でブラウザが起動してデバッグモードに突入しました。
きちんとApacheへのアクセスをデバッグするときはApache起動の上でやらないとだめってことね。(当たり前)
では、今度は外部のブラウザからアクセスしてみる。
が、普通にアクセスしてみてもEclipse上でとまってくれない・・・
Tomcatだとここでとまってくれるのに。
Eclipse上のブラウザのURLを見てみる。
http://localhost/phptest/test.php?
debug_session_id=1005&start_debug=1&debug_start_session=1&debug_host=hogehage%
2C127.0.0.1&debug_no_cache=1228750711078&debug_port=10000&
send_sess_end=1&original_url=http://localhost/phptest/test.php&debug_stop=1
なげー。
これ、全部クエリで渡してるのかッ!
このURLをブラウザに貼り付け、実行するとようやくEclipse上でとまってくれました。
Zendのデバッガって無理やりクエリでデバッグ用のパラメタを送ってやってるのね・・・
デバッグ自に必要かどうかはわからないけど、生リクエストでデバッグはできないものなのだろうか?
どっかで見かけたけどZendではMod_Rewriteが効かないらしいがこのあたりが原因?
今度はXDebugの方も見てみよう。
まぁ、何はともあれ、Eclipse上でのデバッグ環境はなんとなくできたということで・・・
今回はいよいよEclipseでデバッガ起動をしてみる。
その前に、Eclipse側の設定を行う。
まず、Preferences -> PHPより Debugを選択する。
各設定項目を以下のように埋める。
PHP Debugger・・・Zend Debuggerf
Server・・・Default PHP Web Server
PHP Executable・・・localhost
エンコーディングはとりあえずUTF-8。
PHP DebuggerのConfigureアンカー。各デバッガで利用するポートの設定だろう。
ServerのPHP Serverアンカー。PHPを稼動させるためのWebサーバの設定を行う。
(注・いろいろ触ってるうちに先に作っちゃってたっぽい。本来はここではじめて行う設定かも・・・)
PHPサーバを選択してEdit。
Eclipse上で使う設定名とURIを入力。(http://localhost)
Path on ServerにPHP保存ディレクトリの絶対パスを入力し、Local Pathにワークスペース上のパス(プロジェクト名でOKか?)を入力する。
PHP Executableアンカーより、PHP実行ファイルのパスを設定する。
Nameは何でもOK。
Executable Pathはphp.exeへの絶対パス。
PHP ini fileはphp.iniファイルへの絶対パス。
テストによってphp.iniファイルを差し替えたいときは便利かも。
PHP debuggerはZend Debuggerを選択。
ここまで設定して、ワークスペースよりPHPファイルを選択してDebug -> PHP Script。
普通にデバッガが起動してステップ実行ができるようになりました。
きちんとサーバ環境変数も拾ってくれるしなかなかイイ感じ。
と、ここでふと思ったのだがApache起動してないじゃん。
ここでこんどはこのまま「Debug as PHP Web Page」を実行してみる。
今度はEclipse上でブラウザが起動して、案の定実行エラーになった。
更に、今度はApacheを起動した上で「Debug as PHP Web Page」を実行。
すると、同様にEclipse上でブラウザが起動してデバッグモードに突入しました。
きちんとApacheへのアクセスをデバッグするときはApache起動の上でやらないとだめってことね。(当たり前)
では、今度は外部のブラウザからアクセスしてみる。
が、普通にアクセスしてみてもEclipse上でとまってくれない・・・
Tomcatだとここでとまってくれるのに。
Eclipse上のブラウザのURLを見てみる。
http://localhost/phptest/test.php?
debug_session_id=1005&start_debug=1&debug_start_session=1&debug_host=hogehage%
2C127.0.0.1&debug_no_cache=1228750711078&debug_port=10000&
send_sess_end=1&original_url=http://localhost/phptest/test.php&debug_stop=1
なげー。
これ、全部クエリで渡してるのかッ!
このURLをブラウザに貼り付け、実行するとようやくEclipse上でとまってくれました。
Zendのデバッガって無理やりクエリでデバッグ用のパラメタを送ってやってるのね・・・
デバッグ自に必要かどうかはわからないけど、生リクエストでデバッグはできないものなのだろうか?
どっかで見かけたけどZendではMod_Rewriteが効かないらしいがこのあたりが原因?
今度はXDebugの方も見てみよう。
まぁ、何はともあれ、Eclipse上でのデバッグ環境はなんとなくできたということで・・・
PR
[PHP環境構築] PHP側のデバッグ環境を整える。
2008.12.04 |Category …PHP
前回はPHP環境構築でIDEとして結局Eclipseを採用したところまでを書いた。
PDTでPHPデバッグ環境を構築するには別途PHPサーバ、PHPデバッグ環境が必要だそうだ。
現在、PDTではZend DebuggerとXDebugというのに対応してるらしい。
ZendはFrameworkを作ってたりとなんとなく聞いたことがあるので(おぃ)とりあえずZendを選ぶ。
Zend Debuggerを
http://downloads.zend.com/pdt/server-debugger/
よりダウンロードし、解凍。
ファイル名が「ZendDebugger-5.2.14-cygwin_nt-i386.zip」となっているのはWindowsとCygwin上でも
OK、という意味だろう。多分。
サブディレクトリにはいくつかディレクトリがあったが今回使うのはnts(non_thread_safe)ではない
5_2_x_comp/ZendDebugger.dll
だろう。
これをPHPインストールディレクトリにコピーし、php.iniに以下の記述を追加。
zend_extension_ts=[ZendDebugger.dllへのパス]
zend_extension=[ZendDebugger.dllへのパス]
zend_extension_manager.debug_server_ts=[PHPインストールディレクトリ]
zend_debugger.allow_hosts=[接続許可ホスト(カンマ区切り、ネットワークアドレス可)]
zend_debugger.expose_remotely=always
これでApacheを再起動したところ、phpinfo()で出力した情報の中にZendEngine2が組み込まれている事を
確認した。
次はEclipseからデバッグ接続を試してみる。
PDTでPHPデバッグ環境を構築するには別途PHPサーバ、PHPデバッグ環境が必要だそうだ。
現在、PDTではZend DebuggerとXDebugというのに対応してるらしい。
ZendはFrameworkを作ってたりとなんとなく聞いたことがあるので(おぃ)とりあえずZendを選ぶ。
Zend Debuggerを
http://downloads.zend.com/pdt/server-debugger/
よりダウンロードし、解凍。
ファイル名が「ZendDebugger-5.2.14-cygwin_nt-i386.zip」となっているのはWindowsとCygwin上でも
OK、という意味だろう。多分。
サブディレクトリにはいくつかディレクトリがあったが今回使うのはnts(non_thread_safe)ではない
5_2_x_comp/ZendDebugger.dll
だろう。
これをPHPインストールディレクトリにコピーし、php.iniに以下の記述を追加。
zend_extension_ts=[ZendDebugger.dllへのパス]
zend_extension=[ZendDebugger.dllへのパス]
zend_extension_manager.debug_server_ts=[PHPインストールディレクトリ]
zend_debugger.allow_hosts=[接続許可ホスト(カンマ区切り、ネットワークアドレス可)]
zend_debugger.expose_remotely=always
これでApacheを再起動したところ、phpinfo()で出力した情報の中にZendEngine2が組み込まれている事を
確認した。
次はEclipseからデバッグ接続を試してみる。
[PHP環境構築]
2008.11.30 |Category …PHP
インストールしたPHPで出力されるphp_infoを見ていてふと思った。
Configuration File (php.ini) Path C:\WINDOWS
php.iniのパスは「C:\WINDOWS」ですよ
今回の作業手順ではWindowsのシステムディレクトリにファイルはコピーしていない。
PHP関連のモジュールはhttpd.confと環境変数だけで補っている、はずがphp.iniの場所はC:\WINDOWS
ですよ、といわれている。
一応確認してみたがシステムディレクトリに該当するファイルは存在しない。
PHPは設定ファイルが無いとデフォルト値だけで動作するみたいですね。
というか、php.iniはデフォルトと異なる部分だけ記述すればその部分をデフォルトからオーバーライドしてくれるつくりなんだろうか?
とりあえず、「php.ini」は無くても動くみたいですねー。(今まで設定ファイルは基本的に設定ファイルがなければアウト、あればそのファイルの中の設定だけで動かす、という仕様でものづくりする事が多かったので汎用的な仕組みの場合は設定ファイル無しケース(全部デフォルトで動かす)、必要な物だけ変えるケースも考慮するのもアリかなーと思いました。<バグの元になりかねないけど^^;あ、設定ファイルのパスをしっかりと定義させればよいのかな?)
php.iniはどうやらhttpd.confによってパスを変えられるらしく、
PHPIniDir "php.iniがあるパス"
を追記すればそのphp.iniを読んでくれるみたいですね。これに関しては環境変数PATHは関係ないっぽいです。
システムディレクトリに突っ込むのもひとつの案なんですが、複数の環境を共存させたい場合に起動バッチかなんかでmoveしてあげなきゃいけなくなったりしてできるのであれば設定ファイル系は環境ごとに分けたいですよね。(この場合、どっちにしてもApacheを複数立てるかモジュールは同じものを使いたい場合は-f オプションでhttp.confを読み分けてあげる必要はあると思いますけど、同じマシンで複数環境は簡単に作れそうですね。
この要領だと.htaccessでのphp.iniファイル制御もできるっぽいので今度調べてみます。
(プロパティによってオーバーライドさせない、とかあるのだろか?デフォルトのphp.iniに書いてあることは変えられない、とかだと運用上良いかもしれないですね。)
Configuration File (php.ini) Path C:\WINDOWS
php.iniのパスは「C:\WINDOWS」ですよ
今回の作業手順ではWindowsのシステムディレクトリにファイルはコピーしていない。
PHP関連のモジュールはhttpd.confと環境変数だけで補っている、はずがphp.iniの場所はC:\WINDOWS
ですよ、といわれている。
一応確認してみたがシステムディレクトリに該当するファイルは存在しない。
PHPは設定ファイルが無いとデフォルト値だけで動作するみたいですね。
というか、php.iniはデフォルトと異なる部分だけ記述すればその部分をデフォルトからオーバーライドしてくれるつくりなんだろうか?
とりあえず、「php.ini」は無くても動くみたいですねー。(今まで設定ファイルは基本的に設定ファイルがなければアウト、あればそのファイルの中の設定だけで動かす、という仕様でものづくりする事が多かったので汎用的な仕組みの場合は設定ファイル無しケース(全部デフォルトで動かす)、必要な物だけ変えるケースも考慮するのもアリかなーと思いました。<バグの元になりかねないけど^^;あ、設定ファイルのパスをしっかりと定義させればよいのかな?)
php.iniはどうやらhttpd.confによってパスを変えられるらしく、
PHPIniDir "php.iniがあるパス"
を追記すればそのphp.iniを読んでくれるみたいですね。これに関しては環境変数PATHは関係ないっぽいです。
システムディレクトリに突っ込むのもひとつの案なんですが、複数の環境を共存させたい場合に起動バッチかなんかでmoveしてあげなきゃいけなくなったりしてできるのであれば設定ファイル系は環境ごとに分けたいですよね。(この場合、どっちにしてもApacheを複数立てるかモジュールは同じものを使いたい場合は-f オプションでhttp.confを読み分けてあげる必要はあると思いますけど、同じマシンで複数環境は簡単に作れそうですね。
この要領だと.htaccessでのphp.iniファイル制御もできるっぽいので今度調べてみます。
(プロパティによってオーバーライドさせない、とかあるのだろか?デフォルトのphp.iniに書いてあることは変えられない、とかだと運用上良いかもしれないですね。)
[PHP開発環境構築] IDEの導入
2008.11.27 |Category …PHP
前回はサーバサイドの環境までを作った。(Apache+PHPまで。完全にデフォルトインストールなので必要に応じて設定を変えねば・・・
次はIDEの導入、という事でPHP対応のエディタを探してみる。
テキストエディタ(普段は秀丸です^^;)でも良いかな、と一瞬思ったけどデバッグ環境まで整える事を考慮してきちんとIDEを使おうと思う。
とりあえず、(というかもともとJava出身なので^^;)まずはEclipse+PHPプラグインのダウンロード。
本当はAllInOne環境は好きじゃないんだがお手軽環境構築という事で
All In One Eclipse + PDTを使ってみます。
とりあえずダウンロードして展開してみました。
新規プロジェクトにPHPってのがあってびっくり。
使い勝手とかも書ければいいですねー。
ところで、英語版のIDEを使ってみると当幅フォントがデフォルトって少ないと思う・・・
昔から当幅フォントなエディタばっかり使ってるから英語版を使うときに最初にものすごく違和感を感じる。
大体すぐにフォントをMSゴシックかなんかに変えちゃうんで余計慣れないんでしょうけどね。
英語圏の人たちは当幅でないフォントの方が見やすいんでしょうかね?インデントとか考えると当幅の方が
良いと感じてしまうのは全角文字を使うからでしょうか?むぅ。
次はIDEの導入、という事でPHP対応のエディタを探してみる。
テキストエディタ(普段は秀丸です^^;)でも良いかな、と一瞬思ったけどデバッグ環境まで整える事を考慮してきちんとIDEを使おうと思う。
とりあえず、(というかもともとJava出身なので^^;)まずはEclipse+PHPプラグインのダウンロード。
本当はAllInOne環境は好きじゃないんだがお手軽環境構築という事で
All In One Eclipse + PDTを使ってみます。
とりあえずダウンロードして展開してみました。
新規プロジェクトにPHPってのがあってびっくり。
使い勝手とかも書ければいいですねー。
ところで、英語版のIDEを使ってみると当幅フォントがデフォルトって少ないと思う・・・
昔から当幅フォントなエディタばっかり使ってるから英語版を使うときに最初にものすごく違和感を感じる。
大体すぐにフォントをMSゴシックかなんかに変えちゃうんで余計慣れないんでしょうけどね。
英語圏の人たちは当幅でないフォントの方が見やすいんでしょうかね?インデントとか考えると当幅の方が
良いと感じてしまうのは全角文字を使うからでしょうか?むぅ。
[PHP開発環境構築] ApacheへのPHP設定
2008.11.24 |Category …PHP
前回はPHP5のダウンロードからインストール(展開)、WindowsのPATH設定までを行った。
今回はApache側にPHPを読ませるとこまでを行う。
まずはLoadModuleの設定
httpd.confの任意の行に
LoadModule php5_module [PHPインストールディレクトリ]/php5apache2.dll
と入力する。[PHPインストールディレクトリ]それぞれインストールしたパスに置き換える。
蛇足だが、環境変数PATHを通したんだからホスト内のDLLを探してくれてもよさそうだったんだが
httpd.confのServerRootで定義されたPATH以外は絶対パスでの指定が必要っぽい。
(詳しく調べてないから間違ってるかも知れんけど)
あと、Apacheの設定をいじる時はコマンドプロンプト出して
apache -t
コマンドオプションを使って設定ファイルの妥当性を確認しながら行うとApacheを起動してログを
確認する手順がかなり省けて楽。
次はApacheに拡張子単位でPHPに処理させる設定を追加。
以下の2行を任意の位置に追加。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ここまで設定したらApacheを起動してphpinfo()をPHPファイルを実行させる。
無事、PHP設定情報リストが表示され、ただPHPを実行したいだけであればここまでの設定で十分
なことを確認した。
今回はApache側にPHPを読ませるとこまでを行う。
まずはLoadModuleの設定
httpd.confの任意の行に
LoadModule php5_module [PHPインストールディレクトリ]/php5apache2.dll
と入力する。[PHPインストールディレクトリ]それぞれインストールしたパスに置き換える。
蛇足だが、環境変数PATHを通したんだからホスト内のDLLを探してくれてもよさそうだったんだが
httpd.confのServerRootで定義されたPATH以外は絶対パスでの指定が必要っぽい。
(詳しく調べてないから間違ってるかも知れんけど)
あと、Apacheの設定をいじる時はコマンドプロンプト出して
apache -t
コマンドオプションを使って設定ファイルの妥当性を確認しながら行うとApacheを起動してログを
確認する手順がかなり省けて楽。
次はApacheに拡張子単位でPHPに処理させる設定を追加。
以下の2行を任意の位置に追加。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ここまで設定したらApacheを起動してphpinfo()をPHPファイルを実行させる。
無事、PHP設定情報リストが表示され、ただPHPを実行したいだけであればここまでの設定で十分
なことを確認した。