Product
PDTで日本語は使えますか?
基本的に問題無く使えます。(Xdebugサポートを除く)
- PHP 関数の関数ホバーや補完候補の説明文等は英語のみ
(→いずれ日本語化されるでしょう)
(オンラインマニュアルはWebサイトを参照しているので日本語で表示できる)
- Windows で EUC-JP ファイルを編集すると一部の文字が化ける (→不可避.但し WindowsのJavaでEUC-JPが文字化けする件について)
- 既存のファイルを編集する場合、文字コードの自動判別機能は無い(デフォルト指定もしくはプロジェクト単位またはファイル単位で明示的に設定しなければならない)ので、若干手間がかかる可能性がなきにしもあらず?
- デバッグ用の文字コードはデフォルト指定もしくはプロジェクト単位で一つだけ指定するので、文字コードが混在していると若干支障をきたす可能性がなきにしもあらず?
PDTでDBGやXdebugは使えますか?
PDTでデバッグ機能を利用するためには、本体とは別にデバッガを自分でインストール・設定する必要があります。対応しているのは ZendDebugger と Xdebug のみで、DBG には対応していません。ただし、PDTのXdebugサポートはPDT本体とは開発主体が異なるので、マルチバイトをサポートしていない
[2.0からサポートされます]、値の変更で eval が使えない、
Linked Folder をサポートしていない[1.0.3で修正されました]、Watch の事前設定が使えない等々、さまざまな欠陥があります。これらの欠陥は開発主体に「バグである」との認識が無いため、改修される可能性は極めて低いです。PDTではZendDebuggerを使いましょう。(ただしPDT+ZendDebuggerは mod_rewrite や pathinfo に対応していないので、それらが必要な場合はXdebugを使わざるを得ない)
ZendDebugger 5.2.10 は PDT1.0(R20070917)用.5.2.12 は PDT1.0.2(R20080103)用.5.2.14 は PDT1.0.3(R20080603)用.
PDTには編集・デバッグ以外の機能はありますか?
ありません。
(プロファイラとかライブラリアンとかアナライザとかDB関連機能とか、何もありません)
PDTでリモートのWebサーバにあるPHPファイルを直接編集できますか?
PDTで編集したPHPファイルをリモートのWebサーバに自動アップロードできますか?
できません。Webサーバがリモートマシンにある場合、ファイル転送のために「何か」用意する必要があります。
PDTで php.ini の編集はできますか?
できません。php.ini は通常通りエディタで開いて編集する必要があります。
PDTは Eclipse 3.3 に対応していますか?
PDT 1.0 は JRE 5.0以上+Eclipse 3.3+WST 2.0 が必須です。
PDTは Eclipse 3.4 に対応していますか?
PDT 2.0(2008/12リリース)での対応となります。
Editor
エクスプローラからPDTのプロジェクトにドラッグ&ドロップしたPHPファイルが文字化けするのですが?
ファイルの右クリックメニューから Properties を選択し、Text file encoding に正しい文字エンコーディングを設定して下さい。リストボックスに適切な選択肢が無い場合は直接入力して下さい。
PDT の文字エンコーディング決定ルール
- 新規作成、ワークスペース内でのコピー(Copy+Paste等)、外部(eg. Explorer)からEclipseへのドラッグ&ドロップ、の場合
- プロジェクトのプロパティの設定に従う.デフォルトは「Eclipseの設定を引き継ぐ」.Eclipseの設定は Preferences>General>Workspace の Text file encoding.
- ただし、Preferences>General>Content Types の Text>PHP Content Type に文字エンコーディングが設定されていれば、それに従う.(デフォルトでは設定されていない)
- ワークスペース内での移動(Refactor→Move)の場合
- ファイルに設定済みの文字エンコーディングが引き継がれる.
オブジェクト変数のコンテンツアシストが効かないのですが?
オブジェクト変数を間接的に取得している場合、コンテンツアシストが効きません。
function getObj() {
…
}
…
$obj = getObj();
$v = $obj->|
このような場合、function の戻り値を PHPDoc コメントで明示してやればコンテンツアシストが効くようになります。
/**
* @return MyClass
*/
function getObj() {
…
}
…
$obj = getObj();
$v = $obj->|
また、変数に型を指定するやり方もあります。(PHPDocコメントではなく通常のコメントであることに注意して下さい)
function getObj() {
…
}
…
/* @var $obj MyClass */
$obj = getObj();
$v = $obj->|
型指定はどこにあっても構いません。(変数名の $ はあってもなくても構いません)
foreach ($objArray as $obj) {
/* @var obj MyClass */
$obj->|
}
PHPプロジェクト内に無い外部ライブラリ(Smarty など)のクラス・メソッド・関数でコンテンツアシストが効かないのですが?
Include Paths に設定してやればコンテンツアシストが効くようになります。
コンテンツアシストもオートインデントもホバーも何も効かないのですが?
プロジェクトがPHPプロジェクトになっていません(アイコンで識別できます)。PHP エディタの機能はPHPプロジェクト内のファイルを編集する場合のみ有効です。
拡張子が ".php" 以外のファイルをPHPエディタで編集したいのですが?
トップメニューの Window>Preferences>General>Content Types で、Text の下の PHP Content Type に拡張子を追加して下さい。
デフォルトは *.inc、*.php、*.php3、*.php4、*.phtml、*.tpl
Preferences>General>Editors>File Associations ではないので注意.
Preferences>PHP>PHP Manual で「Open PHP Manual in new browser window」のチェックを外しているのに毎回新しいブラウザが開かれるのですが?
この設定は Internal Web Browser でのみ有効です。
Browserの選択はメニューのWindow>Web Browser.設定はPreferences>General>Web Browser.
PHPエディタには「画面端で折り返す」機能は無いのですか?
ありません。
JDT でもこの要望は昔からあるのだが、なぜか未だに実装されない.Eclipse にこの機能が無いので PDT が独自実装するかどうかは不明にして期待薄.
タブコードや改行コードを表示させたいのですが?
Preferences>General>Editors>Text Editors の「Show whitespace characters」で設定できます。
検索結果がハイライト表示されないのですが?
SSE(PHPエディタの元になっているエディタ)のバグです。
Annotation の Highlight は全滅。この SSE のバグ(#136923)が修正される兆しはない….PDT側で対処もできるがPDT開発チームにその気は無いようです.
☆バージョン 2.0 から表示されるようになります
PHPエディタには Mark Occurrences の機能は無いのですか?
ありません。
「協議の結果この機能は実装しない」そうです(ーー)
☆バージョン 2.0 から使えるようになります
テンプレート等に使用しているHTMLファイルの「エラー・警告」表示が鬱陶しいのですが?
プロジェクトのプロパティの Validation(または Window>Preferences>Validation)で「HTML Syntax Validator (for PHP Files)」を外せば一応回避はできます。
ファイル個別には設定できない.
HTML Syntax Validator (for PHP Files) を外してもエラー表示が消えないのですが?
Project>Clean で消えます。
コード補完の候補リスト内にテンプレートが現れないのですが?
少なくとも1文字はタイプしてからコード補完リストを表示させて下さい。
短縮型のタグを無効にしてXMLを埋め込みで使用しているのですが、PHPエディタでは文法エラーになってしまいます。これを回避する設定は無いのですか?
ありません。再三要望は出ているのですが、PDT開発チームは「短縮型のタグを無効にできることを知らない」ので「エラーになるのがPHPの仕様だ」と言い張って毎回却下されています。
ところどころ変数名や関数名にオレンジ色の下線が表示されるのですが?
Preferences>General>Editors>Text Editors>Spelling で「Enable spell checking」のチェックを外して下さい。
Format(Ctrl+Shift+F)でフォーマットしようとしても、インデントしか変わらないのですが?
信じられないかもしれませんが、現状『「{」の次行以降の「}」までの間のインデント修正』にしか対応していないんです…改行挿入とか「{」の位置調整とかはしてくれません。
HTMLタグ等のシンタックスカラーを変更したいのですが、PreferencesのPHPにはそれらしい項目が見当たらないのですが?
HTMLの構文彩色は Window>Preferences>Web and XML>HTML Files>Syntax Coloring で設定します。
コンテキストメニューの Refactor>Rename を実行しても何も起きないのですが?
この機能は実装されていません。
Eclipseのテキストエディタはテキストを選択してドラッグ&ドロップできますが、PHPエディタではできないのですか?
SSE(PHPエディタの元になっているエディタ)が対応していないのでできません。
Ctrl+Hoverでハイパーリンク化した関数(定義は別ファイル)をクリックした時、ファイルが正常に開かれない(Read-Only、Outlineビューが空白、エラーになる、etc.)のですが?
プロジェクト名と同名のディレクトリに対象ファイルと同名のファイルが実在していると、そちらを開いてしまうバグがあります。例えばプロジェクト「PHP」の「file1.php」を開くべき時に「C:\PHP\file1.php」が存在していると、「C:\PHP\file1.php」が開かれてしまいます。このようなディレクトリ/ファイルとプロジェクト/ファイルの一致が無いようにして下さい。
コード補完のリストに出て来ない関数があるのですが?
コード補完はPHPのすべての関数をサポートしているわけではありません。
コード補完のリストが出て来ないのですが?
CtrlキーとSpaceキーを同時に押してください。
PHP Explorer
ドットで始まるファイルが PHP Explorer に表示されないのですが?
ドットで始まるファイル・ディレクトリはデフォルトではフィルタで非表示になっています。PHP Explorer のメニュー(ツールバー右端の▽)の「Filters」からフィルタ設定画面で「.* files」のチェックを外して下さい。ただしこれにより Eclipse の設定ファイルである「.project」等も表示されてしまいます。
HDD のディレクトリ・ファイルが見られるような普通のエクスプローラは無いのですか?
PHPプロジェクトの右クリックメニューに「Source>Format」があるのですが、クリックしても何も変化が無いようなのですが?
これはWSTに由来するもので、PDT自体のものではありません。
PHPファイルの右クリックメニューに「Source>Format」があるのですが、グレー表示になっていて使えないようなのですが?
これはWSTに由来するもので、HTML等のファイルで有効です。
Run (ZendDebugger)
「PHP Script」実行時、Debug Output ビューや Browser Output ビューの日本語が文字化けするのですが?
通常の実行でも、起動設定(Launch configuration)の「Run With Debug Info」にチェックが付いている場合、デバッグに使用する文字エンコーディングを設定する必要があります。設定箇所は、トップメニューの Window>Preferences>PHP>Debug の Debug Transfer Encoding と Debug Output Encoding で、ここに適切な文字エンコーディングを指定して下さい。
プロジェクト単位でも設定できますが、ファイル単位・実行単位では設定できません。
ZendDebuggerのみ.
「Run As>PHP Script」で実行するとコンソールビューに E_NOTICE を含むエラーメッセージが出力されて邪魔なのですが?
起動設定(Launch configuration)を開いて「Run With Debug Info」のチェックを外して下さい。デフォルトは設定できないので個別に設定する必要があります。
好意的に解釈すれば「厳格なエラーチェックをしなさい」ということなんだろうと思う.エラーレベルは制御できない.(せめてフィルタリングできたほうがよい?)
「PHP Script」で「Run With Debug Info」を外して実行するとコンソールビューに何も出力されないのですが?
PHP 5.2.3で php.ini に「output_handler = mb_output_handler」の記述があると、バッファサイズ(たぶんデフォルトで4K bytes)未満の出力は捕捉(してコンソールビューに出力)できないようです。全く同一の設定で PHP を 5.2.4 に変えると正常に出力されるので、PHP 5.2.3 の不具合と思われます。
JavaレベルでBufferedInputStreamではPHP 5.2.3の出力は捕捉できないのであった...
「PHP Script」で実行・デバッグすると include_path が勝手に書き換えられてしまうのですが?
プロジェクトの Include Paths に準じるのが仕様です。ここに適切なパスを設定しないとコード補完とか効かないので設定するのが推奨なのですが、コード補完とか要らない、php.ini と自分で整合を取らなきゃいけない(PDTは面倒見てくれません)のは面倒くさい、とかいう場合、php.ini の記述を「include_path=」から「include_path =」(判り難いですが“=”の前にスペースが入ってます)に変えれば(かつ、php.ini の冒頭に“[php]”のようなセクションがあれば)、PDTの変更は php.ini の先頭に加えられるため、その後に記述されることになる本来の include_path が有効なままになります。
バグなんですけどね
Debug (ZendDebugger)
リモートデバッグしたいのですが、Zend Platformをダウンロードしなければいけないのでしょうか?
そんなことはありません。環境をゼロから構築する場合には有用かもしれませんが、既に Web サーバ(Apache とか)も PHP 実行環境もある場合、必要なのは ZendDebugger.dll だけです。
PHP をインストールしたディレクトリに PHP のバージョンに対応した ZendDebugger.dll をコピーし、php.ini に設定を追加して下さい。
zend_extension_ts=ZendDebugger.dll
zend_debugger.allow_hosts=xxx.xxx.xxx.xxx ;デバッグ端末のIPアドレス(複数の場合カンマ区切りで)
ZendDebugger.dllは下記からダウンロードできます。
http://downloads.zend.com/pdt/server-debugger/
デバッグ時、Variables ビューや Debug Output ビュー、Browser Output ビューの日本語が文字化けするのですが?
デバッグに使用する文字エンコーディングを設定する必要があります。設定箇所は、トップメニューの Window>Preferences>PHP>Debug の Debug Transfer Encoding と Debug Output Encoding で、ここに適切な文字エンコーディングを指定して下さい。
プロジェクト単位でも設定できますが、ファイル単位・実行単位では設定できません。
デバッグ時、Variables ビューで Change Value がうまくいかないのですが?
・「UTF-8」が「-8」になったり
・「OK!」が無視されたり
・「000」が「0」になったり
Change Value で入力された文字列はそのままの文字列として変数にセットされるわけではなく、「評価」(evaluate)されます。入力されたものが数式の場合は計算結果が、関数の場合はその関数の実行結果が、変数($~)の場合はその変数の値が、単なるアルファベットの場合は文字列とみなしてそのまま、変数にセットされます。
文字列をセットしたい場合は「'」で囲って文字列であることを明示したほうがよいでしょう。
デバッグ実行しても何も起きないのですが?
ZendDebugger.dll のバージョンが合っているかどうか確認して下さい。例えば PHP Script 実行のコンフィギュレーションで「Run With Debug Info」のチェックを外して実行すると PHP の出力がコンソールビューに表示されますが、ここにエラーメッセージ(e.g. Failed loading ZendDebugger.dll)が表示されていたら、正しい ZendDebugger.dll をセットアップして下さい。
PHP 5.2.0 に 5.1.x 用 ZendDebugger を指定すると「何も起きない」
PHP 5.1.6 に 5.0.x 用 ZendDebugger の場合などはエラーメッセージボックスが出るので判りやすい?
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[0]
最新の PDT (R20080603)と最新の ZendDebugger (5.2.14)を使って下さい。
phpinfo() で ZendDebugger が組み込まれていることを確認して下さい。
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[1]
Apache の error.log を確認して下さい。IPアドレスがデバッグ許可されていないかもしれません。その場合、php.ini の zend_debugger.allow_hosts でデバッグ端末の正しいIPアドレスを指定して下さい。
この場合「Break at First Line」も当然ながら無効.
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[2]
サーバがリモートの場合、Windows ファイアウォールの設定を確認して下さい。「例外」で Java にチェックが付いていない場合はチェックを付けて下さい。
この場合「Break at First Line」も当然ながら無効.
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[3]
デバッグ用ポート(デフォルトは10000)が使用中でないか確認して下さい。使用中の場合は設定でポート番号を変更するなり、使用中のプログラム/サービスを停止するなりして下さい。
現状、{workspace}/.metadata/.logに「Port 10000 is in use.」と記録されるだけ.
(Linux~Webminはデフォルトで10000を使用)
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[4]
デバッグ開始ページとは別のページにブレークポイントがある場合、起動設定(Launch Configuration)の Advanced の「Debug All Pages」が選択されていなければなりません。(「Start Debug from」に該当ページを指定するのも可)
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[5]
NAT を使用している場合、リモートデバッグ機能は利用できません。今のところ。
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[6]
プロジェクト外の(IncludePath下の)ファイルに設定したブレークポイントは無効です。今のところ。
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[7]
URL が PathInfo を含んでいる場合や mod_rewrite を使用している場合、ブレークポイントは正しく動作しません。今のところ。
無応答になることもある.
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[8]
PHP Servers~サーバの設定の URL(Document Root の URL でなければならない)が正しくない場合(例えばサブフォルダを指定してしまった場合など)、ブレークポイントは無視されます。
Break at First Line は有効.ブレークポイントはスルーされる.
「PHP Web Page」でデバッグ実行してもブレークポイントで止まらないのですが?[9]
サーバがLinuxなどで、シンボリックリンクでDocumentRoot下にリンクしたディレクトリにPHPファイルがある場合、ブレークポイントは有効になりません。
Break at First Line は有効.ブレークポイントはスルーされる.
「PHP Script」でデバッグ実行してもブレークポイントで止まらないのですが?[1]
PDT 1.0.3で、対象ファイルがLinkedファイルもしくはLinkedフォルダの下のファイルの場合、バグのためブレークポイントは無視されてしまいます。
Break at First Line は有効.ブレークポイントはスルーされる.
1.0.3でEnbugした.
デバッグ実行してもブレークポイントで止まらないのですが?
「else」や「elseif」にブレークポイントを設定した場合、デバッグ実行時には無視されます。
PHP仕様(PHPがデバッガモジュールに制御を渡さない)?
デバッグ時、時々ブレークポイントで止まらなかったりステップ実行の応答が返ってこなかったりするのですが?
もしこのような状態になったら、とりあえず Debug ビューでプロセス(PHP Application)またはスレッド(プロセスの直下のファイル名が表示されている行)を選択して Suspend ボタンをクリックすると、制御が PDT に戻ってくるかもしれません。
ZendDebuggerとの通信とUIの制御は独立して非同期に実行されているため、UI制御より先に通信が完了してしまい、状態の不一致を生じることがあるため.同期メカニズムの実装が必要.
デバッグ時、エディタのポップアップメニューの「Watch」がグレー表示になっているのですが?
ウォッチ式として登録する範囲を選択すれば有効になります。
Variables ビューの「Create Watch Expression」と異なり、Expressions ビューは自動表示されない.
Webデバッグで、GETパラメータを指定してデバッグを開始したいのですが?
Open Debug Dialogで出てくる起動構成でURLのAuto Generateのチェックを外し、URLに?hogehoge=hugahugaを付加すれば起動はできます。が、この指定は保存されないので、起動用のPHPファイル(GETパラメータ付きのリンクを出力するだけのスクリプト)を作成するしかないと思われます。
1.0.3では保存されるようになっていた