View Issue Details

IDProjectCategoryView StatusLast Update
0001374XdebugStep Debuggingpublic2023-09-03 19:14
ReporterRadek Suski Assigned Toderick  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionunable to reproduce 
PlatformRaspberry PI OSraspbianOS Version4.4
Product Version2.4.0 
Summary0001374: XDebug seems to be overwriting thee FILE and DIR constants
Description

as in the summary.

Steps To Reproduce

Well, this is a bit strange because I know it worked before but suddenly when I am trying to debug within Joomla! my own library those constants containing values as follow:

__FILE__ =  xdebug://debug-eval
__DIR__  = xdebug:   

See https://pbs.twimg.com/media/CygMFz3XgAAOgQl.jpg:large

TagsNo tags attached.
Operating SystemmacOS 10.12.1 (16B2555)
PHP Version7.0.10-7.0.14

Activities

Radek Suski

2016-12-03 11:39

reporter   ~0003874

BTW: I am apparently not the only one:
http://stackoverflow.com/questions/21254661/xdebug-weird-dir-constant
http://stackoverflow.com/a/30290059/310011
https://laracasts.com/discuss/channels/laravel/new-to-laravel-taking-over-development/replies/109105

Additionally because every time I wrote it people assuming I am using "eval", so just to clarify I don't
For debugging I am using phpStorm 2016.2.2

derick

2016-12-03 12:46

administrator   ~0003875

Hi,

thanks for the report. In order to find and fix the bug, I really do need a reproducible case. As this seems to be a remote debugging issues, please refer to https://xdebug.org/support.php#remote as to what I would require.

cheers,
Derick

Radek Suski

2016-12-03 13:21

reporter   ~0003882

Last edited: 2023-09-03 13:47

Sure thing, here is the script: https://gist.github.com/Radek-Suski/660a8b820c98763304fa8617fa7c77d1
Here is the log file: https://www.dropbox.com/s/kq5sst1maot4he4/xdebug-log.log?dl=0

What really weird, I just realised, that debugging this script gives following results:

__FILE__ = "xdebug://debug-eval"
__DIR__ = "xdebug:"
$file = "/www/Neo/libraries/Sobi/index.php"
$dir = "/www/Neo/libraries/Sobi"
$dirname = "/www/Neo/libraries/Sobi"

Which means that if I assign those constants to variables, those variables are having correct values.

Regards,
Radek

derick

2016-12-04 17:33

administrator   ~0003924

Hi,

I see what happens now. You have these in the "Watches" field. PhpStorm handles watches by running the DBGp "eval" command. In the log, that looks like:

<- eval -i 62 -- JEdMT0JBTFNbJ0lERV9FVkFMX0NBQ0hFJ11bJzlmNmZiNjcxLWU0ZWItNDIyNy04Mzc2LTNhNjNkZDNiMmNmMCddPV9fRElSX18=

As the eval command really just calls PHP's eval, you get the same result:

$ php -r "echo eval('echo FILE;');"
Command line code(1) : eval()'d code

Xdebug does replace the "Command line code(1) : eval()'d code" with "xdebug://debug-eval" though.

This is something I can not change.

Radek Suski

2016-12-04 17:39

reporter   ~0003925

@derick Thank for your answer. Yet I am not sure if you are entirely correct. Yes, I have it in watches. But even if, the logical execution is failing. I am asking:

if(file_exists( DIR.'/file.php'))

and it returns "false". It can't be just because I have it in my "watches" because at the first time I was debugging my case, it wasn't

derick

2016-12-04 17:54

administrator   ~0003927

No, it can't be because it's in watches. But that "file_exists" would only file for real reasons. If you can reproduce this, I would use "strace -o /tmp/strace.log php script.php" and see for which file it is doing a "stat".

Radek Suski

2016-12-04 18:50

reporter   ~0003928

I know for sure that this file exists. That's how I figured out this issue

derick

2016-12-04 19:09

administrator   ~0003929

Okay - I would definitely use the strace then. There must be something why PHP thinks it's not there, and strace is your only hope I think.

Radek Suski

2016-12-04 19:11

reporter   ~0003930

no problem. I will try to deliver it soon. Thank you very much

derick

2016-12-05 14:19

administrator   ~0003943

(Changing it to feedback until you do).

derick

2017-01-03 18:49

administrator   ~0004128

Ping?

derick

2017-02-07 17:08

administrator   ~0004200

I am closing this, as I can't reproduce this, and the requested feedback has not been given. Please feel free to reopen this if you can provide more information as requested.

spiritabsolute

2017-12-20 16:43

reporter   ~0004523

This error is repeated for me! How can I fix it? xdebug 2.5.5-1

anton.m4354

2023-09-02 06:31

reporter   ~0006644

Xdebug 3.2.1, the problem persists (as far as I understand, in all other versions too). To reproduce it, it is enough (when working in phpstorm) during a debugging session to open the Evaluate Expression window (alt + F8) and enter one of these constants there. You can just use the debug console, you can use the clock, the behavior is the same everywhere.

derick

2023-09-03 13:59

administrator   ~0006645

@anton.m4354: I would still expect what you show. When PhpStorm evaluates __DIR__ or __FILE__, it uses eval under the hood. This evaluates the string, exactly what this would do:

echo eval(__DIR__);

Which on the PHP CMD also produces a similar result:

php -r &quot;echo eval('return __FILE__;');&quot;

Returning:

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

Xdebug does wrap that in its own file name though, which is xdebug://debug-eval. There is nothing I can change here, and I am not sure whether PhpStorm can, but you can always ask them at youtrack.jetbrains.com/

anton.m4354

2023-09-03 19:14

reporter   ~0006646

@derick that is, if Phpstorm would directly echo __FILE__;, then the result would be correct?

Issue History

Date Modified Username Field Change
2016-12-03 11:30 Radek Suski New Issue
2016-12-03 11:39 Radek Suski Note Added: 0003874
2016-12-03 12:46 derick Note Added: 0003875
2016-12-03 12:46 derick Assigned To => derick
2016-12-03 12:46 derick Status new => feedback
2016-12-03 13:21 Radek Suski Note Added: 0003882
2016-12-03 13:21 Radek Suski Status feedback => assigned
2016-12-04 17:33 derick Note Added: 0003924
2016-12-04 17:33 derick Status assigned => resolved
2016-12-04 17:33 derick Resolution open => not fixable
2016-12-04 17:39 Radek Suski Note Added: 0003925
2016-12-04 17:39 Radek Suski Status resolved => feedback
2016-12-04 17:39 Radek Suski Resolution not fixable => reopened
2016-12-04 17:54 derick Note Added: 0003927
2016-12-04 17:54 derick Status feedback => resolved
2016-12-04 17:54 derick Resolution reopened => no change required
2016-12-04 18:50 Radek Suski Note Added: 0003928
2016-12-04 18:50 Radek Suski Status resolved => feedback
2016-12-04 18:50 Radek Suski Resolution no change required => reopened
2016-12-04 19:09 derick Note Added: 0003929
2016-12-04 19:11 Radek Suski Note Added: 0003930
2016-12-04 19:11 Radek Suski Status feedback => assigned
2016-12-05 14:19 derick Note Added: 0003943
2016-12-05 14:19 derick Status assigned => feedback
2017-01-03 18:49 derick Note Added: 0004128
2017-02-07 17:08 derick Note Added: 0004200
2017-02-07 17:08 derick Status feedback => resolved
2017-02-07 17:08 derick Resolution reopened => unable to reproduce
2017-12-20 16:43 spiritabsolute Note Added: 0004523
2020-03-12 16:33 derick Category Remote Debugging => Step Debugging
2023-09-02 06:31 anton.m4354 Note Added: 0006644
2023-09-02 06:31 anton.m4354 File Added: bandicam 2023-09-02 12-27-32-129.mp4
2023-09-03 13:47 derick Steps to Reproduce Updated
2023-09-03 13:47 derick Note Edited: 0003882
2023-09-03 13:59 derick Note Added: 0006645
2023-09-03 19:14 anton.m4354 Note Added: 0006646