gee*_*lin 10 php eclipse xdebug
最近,当我用XDebug调试一些PHP文件时(在Ubuntu上的Eclipse下),我遇到了一个奇怪的行为:
print(__FILE__);
Run Code Online (Sandbox Code Playgroud)
结果
"xdebug eval"
Run Code Online (Sandbox Code Playgroud)
GEE!
所以这个神奇的常数似乎不适用于此.
任何人都知道修复或可行的解决方法?如何调试调试器?(硬编码路径是PITA!)
你得到的输出不正确.__FILE__是一个在解析器时间得到的特殊常量.当PHP脚本被编译时,它会真正读取如下内容:
// test.php
<?php
"test.php";
?>
Run Code Online (Sandbox Code Playgroud)
即使脚本源是:
// test.php
<?php
__FILE__;
?>
Run Code Online (Sandbox Code Playgroud)
这意味着在解析之后,根本没有这样的"常量" __FILE__,因为它已被替换.
这意味着如果你在IDE中,通过DBGp的eval命令,eval -- __FILE__它不能给你__FILE__任何文件名.相反,它使用当前上下文的文件名,该文件名是xdebug eval或在以后的版本中xdebug://debug-eval.
从本质上讲,它与执行此操作相同:
php -r 'eval("__FILE__;");'
Run Code Online (Sandbox Code Playgroud)
其中还输出:
Command line code(1) : eval()'d code
Run Code Online (Sandbox Code Playgroud)
Xdebug查找这种格式,并将其更改为xdebug://debug-eval可以实际调试为eval的代码.
__FILE__ 在PHP源代码中按预期工作,可以使用此代码段证明:
<?php $far = __FILE__; // now evaluate $far in your IDE ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |