如何让PHP神奇常量文件与Eclipse和PDT一起工作

如何让PHP神奇常量文件与Eclipse和PDT一起工作,php,eclipse,xdebug,Php,Eclipse,Xdebug,最近,当我用XDebug(在Ubuntu上的Eclipse下)调试某个PHP文件时,我遇到了一个奇怪的行为: print(__FILE__); 导致 "xdebug eval" 哎呀 所以这个神奇常数似乎不适用于这个 有人知道修复方法或可行的解决方法吗?如何调试调试器? (硬编码路径是PITA!)在第行打印(\uuuu文件\uuuu)上创建断点并分析哪些变量对您可用。不是答案,但您可能可以在PHP5.3中使用\uuuuuu DIR\uuuuuu。 UPD。发现它通常不包含您期望的内容。您得到

最近,当我用XDebug(在Ubuntu上的Eclipse下)调试某个PHP文件时,我遇到了一个奇怪的行为:

print(__FILE__);
导致

"xdebug eval"
哎呀

所以这个神奇常数似乎不适用于这个

有人知道修复方法或可行的解决方法吗?如何调试调试器?
(硬编码路径是PITA!)

在第
行打印(\uuuu文件\uuuu)上创建断点并分析哪些变量对您可用。

不是答案,但您可能可以在PHP5.3中使用
\uuuuuu DIR\uuuuuu


UPD。发现它通常不包含您期望的内容。

您得到的输出没有错误<代码>\uuuu文件\uuuu
是一个特殊常量,在解析器时对其求值。当PHP脚本被编译时,它实际上会读到如下内容:

// test.php
<?php
    "test.php";
?>
它还输出:

Command line code(1) : eval()'d code
Xdebug查找这种格式,并将其更改为
xdebug://debug-eval
这样它就可以真正地调试到评估代码中

\uuuuuu FILE\uuuuuu
在PHP源代码中的工作方式与预期一致,这一点可以通过以下代码片段得到验证:

<?php $far = __FILE__; // now evaluate $far in your IDE ?>

我知道这是个老问题。我通过将其分配给变量解决了这个问题,然后它就可以正常工作了

$file = __FILE__;
include dirname($file) . '/../whateverfile.php';

尽管这是一个相当古老的话题,但它仍然是现实的。这就是为什么我也要复制粘贴类似主题的答案

这是XDEBUG问题,可以通过将XDEBUG版本降级(或者在使用非常旧的PHP时升级)到2.6.1来解决。 我无意中遇到了这个问题,无法找到答案。重新安装服务器、PHP、PHPStorm和不同版本的XDEBUG都没有帮助。 对于MacOS,可以使用

pecl安装xdebug-2.6.1

如果您已经有了更新的版本,您可以使用命令

pecl卸载xdebug

经过几个小时的调查,我的答案对我帮助很大

<?php $far = __FILE__; // now evaluate $far in your IDE ?>
$file = __FILE__;
include dirname($file) . '/../whateverfile.php';