如何让PHP魔术常量__FILE__与Eclipse和PDT一起使用

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

print(__FILE__);

结果

"xdebug eval"

GEE!

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

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

解决方法:

你得到的输出不正确. __FILE__是一个在解析器时间得到的特殊常量.当PHP脚本被编译时,它真的会读到这样的东西:

// test.php
<?php
    "test.php";
?>

即使脚本源是:

// test.php
<?php
    __FILE__;
?>

这意味着在解析之后,根本没有这样的“常量”__FILE__,因为它已被替换.

这意味着如果您在IDE中执行,通过DBGp的eval命令eval – __FILE__,它无法为您提供带有任何文件名的__FILE__.相反,它使用当前上下文的文件名,即xdebug eval或更高版本的xdebug:// debug-eval.

从本质上讲,它与执行此操作相同:

php -r 'eval("__FILE__;");'

其中还输出:

Command line code(1) : eval()'d code

Xdebug查找这种格式,并将其更改为xdebug:// debug-eval,以便它可以实际调试到eval代码.

__FILE__在PHP源代码中按预期工作,可以使用此代码段证明:

<?php $far = __FILE__; // now evaluate $far in your IDE ?>
上一篇:php-Eclipse PDT xdebug:逐步破坏代码


下一篇:如果你在防火墙后面的NAT上,如何使用php xdebug?