It looks like fatal errors can't be suppressed using the @ sign anymore in my PHP setup using MAMP.
I had this all along in PHP 7.4:
@session_destroy(); # Throws an error in PHP7, so hence the @
When I switched to PHP 8.0.0 the fatal error still shows up.
Fatal errors should be tested and handled during the development phase itself, but in my case, I have a custom session handler where session_destroy() requires a custom session function and I can't figure out what the issue is. So I suppressed the session_destroy() call since it's called in the logout page which is normally the last action of a logged in user - this isn't mail or social media. Fixing this custom session handler is for another day but until then, I'll disregard the fatal error.
Since PHP 7, there's a way to handle errors (not exceptions).
try
{
session_destroy();
}
catch (Error $e) # instead of Exception $e
{
die("Logged out.");
}