XDebug PHP Eclipse - 错误找不到合适的文件或没有选择文件

fre*_*dev 8 php macos web-applications xdebug eclipse-pdt

我正在尝试远程调试一个php web应用程序但是无论何时我尝试启动一个调试会话Eclipse都会给我带来一堆弹出窗口:

调试器错误:"找不到合适的文件或没有选择文件.调试已终止".

在此输入图像描述

这是我目前的Xdebug 2.2.1配置:

[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
Run Code Online (Sandbox Code Playgroud)

这是我的Eclipse 4.2.1调试配置:

在此输入图像描述

Xdebug已正确安装,我在phpinfo()输出中看到它已启用.

fre*_*dev 6

我试图调试Eclipse以了解我的Mac OS X中发生了什么.
首先找到当前的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
Run Code Online (Sandbox Code Playgroud)

然后跟踪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 ...]
Run Code Online (Sandbox Code Playgroud)

在这里,我抓住了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
Run Code Online (Sandbox Code Playgroud)

看着fileuri我发现Xdebug正在尝试启动调试会话/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现在找到它正在寻找的文件,调试器最终正确启动.它甚至问我是否要切换到Debug透视图.

结论
如果碰到这个奇怪的错误:" 没有找到合适的文件或者没有选择文件. ",这意味着它的确是什么.好吧,我的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'
Run Code Online (Sandbox Code Playgroud)

  • +1很好的挖掘,你的努力赞赏. (2认同)