Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[DI] Fix Xdebug 3.0 detection#39196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
| $messageinstanceof \Closure | ||
| && (\function_exists('xdebug_is_enabled') &&xdebug_is_enabled() ||\function_exists('xdebug_info')) | ||
| ) { | ||
| $message =$message(); |
nicolas-grekasNov 27, 2020 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@derickr FYI we have this check here because xdebug changes the behavior of PHP in a way that prevents us from doing a lazy evaluation here: native PHP allows one to set the $message property of throwables to a stringable. We use this below.
It would be great if xdebug could preserve this behavior, if possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I think i came up with a better solution. Please check the second commit, which replaces all xdebug-related stuff with resolving the messageCallback when the __toString method is called.
This will also eliminate performance drawbacks when xdebug is installed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I think i came up with a better solution. Please check the second commit, which replaces all xdebug-related stuff with resolving the messageCallback when the __toString method is called.
This will also eliminate performance drawbacks when xdebug is installed.
I take this back.getMessage() does not return the actual message.
derickr commentedNov 28, 2020 via email
On Fri, 27 Nov 2020, Nicolas Grekas wrote:@derickr FYI we have this check here because xdebug changes the behavior of PHP in a way that prevents us from doing a lazy evaluation here: native PHP allows one to set the $message property of throwables to a stringable. We use this below. It would be great if debug could preserve this behavior, if possible. Xdebug shouldn't be changing behaviour, can you file a bug report athttps://bugs.xdebug.org ?cheers,Derick …-- PHP 7.4 Release ManagerHost of PHP Internals News:https://phpinternals.newsLike Xdebug? Consider supporting me:https://xdebug.org/supporthttps://derickrethans.nl |https://xdebug.org |https://dram.iotwitter:@derickr and@xdebug |
nicolas-grekas commentedDec 7, 2020
I submitted an issue athttps://bugs.xdebug.org/view.php?id=1907 |
nicolas-grekas left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I'm going to merge this, but this also means that when xdebug is installed, autowiring exceptions are always computed. This makes the process slower.
It'd be great if the underlying issue in xdebug could be addressed somehow.
nicolas-grekas commentedDec 8, 2020
Thank you@vertexvaar. |
Xdebug 3.0 removed the function
xdebug_is_enabled(). To detect if Xdebug 3.0 is installed (it doesn't even need to be enabled to reproduce the bug) i addedfunction_exists('xdebug_info'). AFAISxdebug_info()is available in Xdebug >= 3.0 only.