Skip to content

Commit b7a1af2

Browse files
committed
added support for backtraces for fatal errors in PHP 8.5
1 parent 0dda939 commit b7a1af2

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

ncs.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="Custom" namespace="Nette">
3+
<rule ref="$presets/php82.xml"/>
4+
5+
<!-- \Exception::class -->
6+
<rule ref="SlevomatCodingStandard.Exceptions.ReferenceThrowableOnly">
7+
<exclude-pattern>./src/Tracy/Debugger/Debugger.php</exclude-pattern>
8+
</rule>
9+
10+
<!-- utf8_decode() -->
11+
<rule ref="Generic.PHP.DeprecatedFunctions.Deprecated">
12+
<exclude-pattern>./src/Tracy/Helpers.php</exclude-pattern>
13+
</rule>
14+
</ruleset>

src/Tracy/Debugger/Debugger.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,12 @@ public static function shutdownHandler(): void
286286
{
287287
$error = error_get_last();
288288
if (in_array($error['type'] ?? null, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE, E_RECOVERABLE_ERROR, E_USER_ERROR], true)) {
289-
self::exceptionHandler(new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']));
289+
$e = new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']);
290+
if (!empty($error['trace'])) {
291+
(new \ReflectionClass(\Exception::class))->getProperty('trace')->setValue($e, $error['trace']);
292+
}
293+
self::exceptionHandler($e);
294+
290295
} elseif (($error['type'] ?? null) === E_COMPILE_WARNING) {
291296
error_clear_last();
292297
self::errorHandler($error['type'], $error['message'], $error['file'], $error['line']);

0 commit comments

Comments
 (0)