mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-24 06:20:56 +01:00
Recover more gracefully when favicon configuration points at a corrupt/damaged file
Summary: Ref T13103. Locally, I managed to break the data for a bunch of files by doing `git clean -df` in a working copy that I'd updated to a commit from many many years ago. Since `conf/local.json` wasn't on the gitignore list many years ago, this removed it, and I lost my encryption keyring. I've symlinked my local config to a version-controlled file now to avoid this specific type of creative self-sabotage in the future, but this has exposed a few cases where we could handle things more gracefully. One issue is that if your favicon is customized but the file it points at can't actually be loaded, we fail explosively and you really can't do anything to move forward except somehow guess that you need to fix your favicon. Instead, recover more gracefully. Test Plan: - Configure file encryption. - Configure a favicon. - Remove the encryption key from your keyring. - Purge Phabricator's caches. - Before: you pretty much dead-end on a fatal that's hard to understand/fix. - After: everything works except your favicon. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13103 Differential Revision: https://secure.phabricator.com/D19406
This commit is contained in:
parent
28517110c6
commit
223d7b84dd
1 changed files with 8 additions and 1 deletions
|
@ -247,7 +247,14 @@ final class PhabricatorFaviconRef extends Phobject {
|
|||
$src_w = $template['width'];
|
||||
$src_h = $template['height'];
|
||||
|
||||
$template_data = $template['file']->loadFileData();
|
||||
try {
|
||||
$template_data = $template['file']->loadFileData();
|
||||
} catch (Exception $ex) {
|
||||
// In rare cases, we can end up with a corrupted or inaccessible file.
|
||||
// If we do, just give up: otherwise, it's impossible to get pages to
|
||||
// generate and not obvious how to fix it.
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!function_exists('imagecreatefromstring')) {
|
||||
return $template_data;
|
||||
|
|
Loading…
Reference in a new issue