From f826fa709cd38d7953b9afa780a483cf82cc5586 Mon Sep 17 00:00:00 2001 From: aasim Date: Sat, 24 Oct 2026 11:42:17 +0200 Subject: [PATCH] Add FPM regression test for fatal backtrace reset --- .../fatal-error-backtrace-request-reset.phpt | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 sapi/fpm/tests/fatal-error-backtrace-request-reset.phpt diff --git a/sapi/fpm/tests/fatal-error-backtrace-request-reset.phpt b/sapi/fpm/tests/fatal-error-backtrace-request-reset.phpt new file mode 100644 index 000000000000..da6941e5b395 --- /dev/null +++ b/sapi/fpm/tests/fatal-error-backtrace-request-reset.phpt @@ -0,0 +1,66 @@ +--TEST-- +FPM: fatal error backtrace is reset before the next request's INI diagnostics +--SKIPIF-- + +--FILE-- +start(iniEntries: [ + 'fatal_error_backtraces' => '1', + 'display_errors' => '0', + 'log_errors' => '1', + 'date.timezone' => 'UTC', +]); +$tester->expectLogStartNotices(); +$response = $tester->request('fatal=1')->expectErrorPattern( + '/\APHP message: PHP Fatal error: Cannot redeclare class RequestReset\b[^\n]*\n' + . 'Stack trace:\n#0 [^\n]*: eval\(\)\n' + . '#1 [^\n]*: trigger_fatal\(\)\n#2 \{main\}\z/' +); +$pid = $response->getBody(); +var_dump(preg_match('/^\d+$/D', $pid) === 1); + +/* PHP_VALUE is applied before php_request_startup(), while shutdown is still flagged. */ +$tester->request(headers: ['PHP_VALUE' => 'date.timezone=invalid']) + ->expectBody($pid . "\nUTC") + ->expectError("PHP message: PHP Warning: PHP Request Shutdown: " + . "Invalid date.timezone value 'invalid', using 'UTC' instead in Unknown on line 0"); +$tester->terminate(); +$tester->expectLogTerminatingNotices(); +$tester->close(); + +?> +Done +--EXPECT-- +bool(true) +Done +--CLEAN-- +