8

PHP Webアプリをリモートでデバッグしようとしていますが、デバッグセッションを開始しようとすると、Eclipseが大量のポップアップでいっぱいになります。

デバッガエラー:「適切なファイルが見つからないか、ファイルが選択されていません。デバッグが終了しました」

ここに画像の説明を入力してください

これは私の現在のXdebug2.2.1構成です。

[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"

これは私のEclipse4.2.1デバッグ構成です。

ここに画像の説明を入力してください

Xdebugが正しくインストールされているので、phpinfo()の出力で有効になっていることがわかります。

4

5 に答える 5

6

Mac OS X で何が起こっているのかを理解するために、Eclipse をデバッグしようとしました。
まず、現在実行中の Eclipse プロセスを見つけます。

$ ps -ef | grep eclipse
   501 15160   373   0  4:21PM ??         2:57.19 /Users/myuser/apps/eclipse/Eclipse.app/Contents/MacOS/eclipse -psn_0_651423

次に、Eclipse システム コールをトレースします。

$ sudo dtruss -fp 15160

 [... omissis ...]
 accept(0xA0, 0x1224C37E8, 0x1224C37E4)      = 103 0
 setsockopt(0x67, 0xFFFF, 0x1002)        = 0 0
 setsockopt(0x67, 0xFFFF, 0x1001)        = 0 0
 read(0x67, "4\0", 0x1)      = 1 0
 read(0x67, "7\0", 0x1)      = 1 0
 read(0x67, "7\0", 0x1)      = 1 0
 read(0x67, "\0", 0x1)       = 1 0
 read(0x67, "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<init xmlns=\"urn:debugger_protocol_v1\" xmlns:xdebug=\"http://xdebug.org/dbgp/xdebug\" fileuri=\"file:///opt/local/var/db/php5/pear/pear-ini.php\" language=\"PHP\" protocol_version=\"1.0\" appid=\"14961\" idekey=\"ECLIPSE_DB", 0x1DD)         = 477 0
 read(0x67, "\0", 0x1)       = 1 0
 [... omissis ...]

ここで、xdebug から送信された最初の行をキャッチしました。
これは、Eclipse が XML の一部を読み取っている行です。これはDBGp部分だと思います。

 <?xml version="1.0" 
       encoding="iso-8859-1"?>
 <init xmlns="urn:debugger_protocol_v1" 
       xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
       fileuri="file:///opt/local/var/db/php5/pear/pear-ini.php" 
       language="PHP" 
       protocol_version="1.0" 
       appid="14961" 
       idekey="ECLIPSE_DB

を見ると、fileuriXdebug が でデバッグ セッションを開始しようとしていることがわかりました/opt/local/var/db/php5/pear/pear-ini.php。このファイルpear-ini.phpは、Eclipse プロジェクトに存在しません。

だから私はEclipseワークスペース内に新しいプロジェクトを作成し、ここでファイルをコピーしました/opt/local/var/db/php5/pear/pear-ini.php

動作し、Eclipse PDT は探していたファイルを見つけ、デバッガーが最終的に正しく起動します。デバッグ パースペクティブに切り替えるかどうかも尋ねられます。

結論
この奇妙なエラーに出くわした場合: "適切なファイルが見つからないか、ファイルが選択されていません。さて、私の Eclipse はファイルを見つけることができませんでしたが、ワークスペースの外にあるファイルを見つけようとしていることも意味していました。何らかの理由で PHP エンジンからロードされたファイルである可能性があります。私の場合、pear-ini.phpによって自動的に追加されますpear.ini

$ cat pear.ini 
 ; Do not edit this file; it is automatically generated by MacPorts.
 ; Any changes you make will be lost if you upgrade or uninstall php5-pear.
 ; To configure PHP, edit /opt/local/etc/php5/php.ini.
 auto_prepend_file = '/opt/local/var/db/php5/pear/pear-ini.php'
于 2013-02-28T16:57:06.423 に答える
3

私はこれと同じ問題を抱えていました.freedevの答えは正しい方向を示していましたが、実際には解決しませんでした.

dtruss を使用しても役に立ちませんでした。その XML<init>要素はどこにもありませんでした。しかし、一度設定xdebug.remote_log=/tmp/xdebug.logするphp.iniとそれを見つけることができ/tmp/xdebug.log、リモート デバッグ セッションを開始しようとしたときにファイルを追跡しました。がまた/opt/local/var/db/php5/pear/pear-ini.php話題になっていました。しかし、私はファイルシステムにそのファイルを持っているので、ファイルが見つからないという漠然としたエラーメッセージがまだ表示されている理由がわかりません.

しかし、Pear が問題に関与していることがわかっsudo port uninstall php53-pearたので、実際にはもう使用していないので、単純に Pear ( ) をアンインストールしてみました。そして見よ、それはそれを修正した!「適切なファイルがありません」というエラー メッセージが表示されなくなり、通常どおりデバッグできるようになりました。

php53-pear をアンインストールするとfileuri、その XML データの設定が、index.phpデバッグしようとしていた Drupal サイトのファイルになります。そのため、Web 要求のエントリポイント ファイルがその XML<init>要素に表示されることを期待する必要があると考えています。fileuriただし、Pear をインストールするとその属性が変更される理由を知りたいと思います。Xdebug をいじらないように Pear を構成できることは、Pear をアンインストールするよりもはるかに優れています。

于 2014-12-04T19:34:03.947 に答える
1

私は同じ問題に遭遇しましたが、原因は上記のとおりではありpear.iniませんでした。pear-ini.php

理由はとても簡単でした。Eclipse 環境に PDT と Aptana PHP プラグインの両方をインストールしました。プロジェクト タイプとデバッグ構成タイプの両方を PDT に切り替えるだけで、すべて正常に機能しました。

素敵なスレを立てていただきありがとうございます。:)

于 2014-02-26T14:03:15.153 に答える
0

以前はデバッガが機能していたのに、突然そのメッセージがスローされ始めた場合は、ソース ファイルをブックマークしただけで、Eclipse がそのファイルをプロジェクトの一部として認識していないか、まったく見つけられない可能性があります。

たとえば、Wordpress 用に作成したプラグインをデバッグしているときに、Eclipse/Xdebug がアクセス/検索できないと思われる外部の Wordpress ファイルをブックマークしました。そのブックマークを削除すると、すべてが正常に戻ります。

その場合は、すべてのブックマークを削除してください。

于 2015-05-22T18:08:58.510 に答える
0

私は Linux を使用しており、strace (もちろん実際の Java サブプロセス) を使用して Eclipse プロセスをアタッチしていますが、そのようなエラーをキャッチできませんでした。

同じ問題が発生しているが解決に失敗し、少し前に Eclipse または PDT の更新を行った場合は、プロジェクトを削除して再作成してみてください。xdebug のデバッグと Eclipse プロジェクトのクリーンアップでは解決できなかった問題が解決されました。

于 2013-08-05T12:06:20.647 に答える