Consider replacing fopen() call in CRM_Utils_File::isIncludable with stream_resolve_include_path()
The problem is depending on how strict your setup is, some code that uses the error suppression operator (e.g.
@unlink('file_which_may_not_exist')) behaves differently in php 8 and doesn't get supressed, either flooding your logs or making civi unusable in some cases.
In particular the api magic function provider uses an algorithm for e.g. getfields, where often the first guess is wrong, leading to an error.
isIncludable was added in 2011, and while stream_resolve_include_path was available at that time, it was introduced into php in 2010, so it's possible not a lot of sites had it.