-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
if ( | ||
$message instanceof \Closure | ||
&& (\function_exists('xdebug_is_enabled') && xdebug_is_enabled() || \function_exists('xdebug_info')) | ||
) { | ||
$message = $message(); |
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.
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 at
https://bugs.xdebug.org ?
cheers,
Derick
…--
PHP 7.4 Release Manager
Host of PHP Internals News: https://phpinternals.news
Like Xdebug? Consider supporting me: https://xdebug.org/support
https://derickrethans.nl | https://xdebug.org | https://dram.io
twitter: @derickr and @xdebug
|
I submitted an issue at https://bugs.xdebug.org/view.php?id=1907 |
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.
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.