Fix PHP 8.1 "file_exists(null)" exception rendering AphrontStackTraceView
Summary:
Passing null to file_exists() is deprecated behavior since PHP 8.1.
The already existing if ($file) check in AphrontStackTraceView implies that $file can indeed be empty.
Thus add another such check higher up in that class to avoid deprecation warnings when rendering stacktraces.
ERROR 8192: file_exists(): Passing null to parameter #1 ($filename) of type string is deprecated at [/var/www/html/phorge/arcanist/src/filesystem/Filesystem.php:1068]; #0 file_exists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1068]; #1 Filesystem::pathExists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1180]; #2 Filesystem::assertExists(NULL) called at [<arcanist>/src/filesystem/Filesystem.php:1020]; #3 Filesystem::isDescendant(NULL, string) called at [<phorge>/src/view/widget/AphrontStackTraceView.php:33];
Closes T15881
Test Plan: Intentionally inject an Array to string conversion bug in PhabricatorEmailPreferencesSettingsPanel (see T15881). Then visit /settings/panel/emailpreferences/. See the same stacktrace before and after applying this change, but see only a single line of output in DarkConsole / Error Log after applying this patch and not anymore numerous Passing null to parameter #1 ($filename) of type string is deprecated errors in DarkConsole / Error Log.
Reviewers: O1 Blessed Committers, speck
Reviewed By: O1 Blessed Committers, speck
Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno
Maniphest Tasks: T15881
Differential Revision: https://we.phorge.it/D25728