WordPress/wp-admin
Felix Arntz 1e4088fc98 Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard.
This changeset introduces a `WP_Shutdown_Handler` class that detects fatal errors and which extension (plugin or theme) causes them. Such an error is then recorded, and an error message is displayed. Subsequently, in certain protected areas, for example the admin, the broken extension will be paused, ensuring that the website is still usable in the respective area. The major benefit is that this mechanism allows site owners to still log in to their website, to fix the problem by either disabling the extension or solving the bug and then resuming the extension.

Extensions are only paused in certain designated areas. The frontend for example stays unaffected, as it is impossible to know what pausing the extension would cause to be missing, so it might be preferrable to clearly see that the website is temporarily not accessible instead.

The fatal error recovery is especially important in scope of encouraging the switch to a maintained PHP version, as not necessarily every WordPress extension is compatible with all PHP versions. If problems occur now, non-technical site owners that do not have immediate access to the codebase are not locked out of their site and can at least temporarily solve the problem quickly.

Websites that have custom requirements in that regard can implement their own shutdown handler by adding a `shutdown-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Shutdown_Handler`. That handler will then be used in place of the default one.

Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in.

Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey.
Fixes #44458.

Built from https://develop.svn.wordpress.org/trunk@44524


git-svn-id: http://core.svn.wordpress.org/trunk@44355 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-01-09 20:05:49 +00:00
..
css Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard. 2019-01-09 20:05:49 +00:00
images Build: Update images following [43684]. 2018-12-19 03:36:27 +00:00
includes Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard. 2019-01-09 20:05:49 +00:00
js Widgets: Fix custom HTML widget editor content not updating after save. 2019-01-08 16:42:49 +00:00
maint Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
network Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
user Code is Poetry. 2017-11-30 23:11:00 +00:00
about.php Help/About: WordPress 5.0 About Page. 2018-12-17 16:36:59 +00:00
admin-ajax.php Privacy: add means to erase personal data by username or email address. First run. 2018-04-18 22:30:22 +00:00
admin-footer.php Code is Poetry. 2017-11-30 23:11:00 +00:00
admin-functions.php Code is Poetry. 2017-11-30 23:11:00 +00:00
admin-header.php Block Editor: Add extra body classes when the block editor is loaded. 2018-12-14 01:21:38 +00:00
admin-post.php Docs: Fix a few minor inline documentation typos in a variety of files and contexts. 2018-12-19 07:42:49 +00:00
admin.php Docs: Document the $page_hook action. 2019-01-09 06:14:51 +00:00
async-upload.php Docs: Fix a few minor inline documentation typos in a variety of files and contexts. 2018-12-19 07:42:49 +00:00
comment.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
credits.php Help/About: WordPress 5.0 About Page. 2018-12-17 16:36:59 +00:00
custom-background.php Docs: Fix a few minor inline documentation typos in a variety of files and contexts. 2018-12-19 07:42:49 +00:00
custom-header.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
customize.php General: Further improve error messages following [42648]. 2018-02-19 02:13:32 +00:00
edit-comments.php I18N: Use the actual placeholder instead of a number in translator comments if the corresponding string does not use numbered placeholders. 2018-03-11 16:44:34 +00:00
edit-form-advanced.php Block Editor: Fix meta boxes not showing. 2018-12-16 01:19:54 +00:00
edit-form-blocks.php Block Editor: Obey the AUTOSAVE_INTERVAL constant. 2019-01-09 06:54:49 +00:00
edit-form-comment.php Comments: Improve the Author box in the Edit Comment screen. 2019-01-08 06:19:50 +00:00
edit-link-form.php Block Editor: Fix meta boxes not showing. 2018-12-16 01:19:54 +00:00
edit-tag-form.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
edit-tags.php Build/Test Tools: Fix coding standards issues after [44515] and [44514]. 2019-01-09 12:37:49 +00:00
edit.php Block Editor: Fix the WordPress packages and vendor script registration. 2018-12-17 19:34:52 +00:00
export.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
freedoms.php Help/About: WordPress 5.0 About Page. 2018-12-17 16:36:59 +00:00
import.php Importers: Use correct l10n variable in wp.updates.installImporterError and filesystem credentials dialog. 2019-01-07 13:49:49 +00:00
index.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
install-helper.php Code is Poetry. 2017-11-30 23:11:00 +00:00
install.php Install/Upgrade: Link to HelpHub instead of the Codex. 2019-01-08 03:29:48 +00:00
link-add.php Code is Poetry. 2017-11-30 23:11:00 +00:00
link-manager.php Code is Poetry. 2017-11-30 23:11:00 +00:00
link-parse-opml.php Code is Poetry. 2017-11-30 23:11:00 +00:00
link.php Code is Poetry. 2017-11-30 23:11:00 +00:00
load-scripts.php Script Loader: Ensure default packages are registered when loaded via load-scripts.php. 2018-12-17 03:15:20 +00:00
load-styles.php Script loader: remove (PHP based) compression from load-styles.php and load-scripts.php. WIth the amount of scripts and stylesheets grown a lot over the years, it has become pretty slow and consumes a lot of server resources. Also, most servers are set to compress PHP output anyway. 2018-08-20 13:51:24 +00:00
media-new.php Code is Poetry. 2017-11-30 23:11:00 +00:00
media-upload.php General: Further improve error messages following [42648]. 2018-02-19 02:13:32 +00:00
media.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
menu-header.php Docs: Fix a few minor inline documentation typos in a variety of files and contexts. 2018-12-19 07:42:49 +00:00
menu.php Privacy: Replace intrusive policy update notice with menu bubbles. 2018-05-10 19:52:21 +00:00
moderation.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-admin.php
ms-delete-site.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
ms-edit.php
ms-options.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-sites.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-themes.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-upgrade-network.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-users.php Code is Poetry. 2017-11-30 23:11:00 +00:00
my-sites.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
nav-menus.php Bundled Themes: Make twentynineteen the default theme. 2018-12-14 02:49:38 +00:00
network.php Code is Poetry. 2017-11-30 23:11:00 +00:00
options-discussion.php Privacy: Revert [43525]. 2018-07-24 17:06:24 +00:00
options-general.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
options-head.php Code is Poetry. 2017-11-30 23:11:00 +00:00
options-media.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
options-permalink.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
options-reading.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
options-writing.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
options.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
plugin-editor.php Docs: Fix a few minor inline documentation typos in a variety of files and contexts. 2018-12-19 07:42:49 +00:00
plugin-install.php Code is Poetry. 2017-11-30 23:11:00 +00:00
plugins.php Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard. 2019-01-09 20:05:49 +00:00
post-new.php Editor: Merge some minor bug fixes. 2018-12-14 05:12:52 +00:00
post.php Block Editor: Display notice to the user when JavaScript is disabled. 2019-01-07 20:40:50 +00:00
press-this.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
privacy.php Privacy: Tweak the wording of the success notice when updating the privacy policy page setting. 2019-01-09 04:19:49 +00:00
profile.php Code is Poetry. 2017-11-30 23:11:00 +00:00
revision.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
setup-config.php Upgrade/Install: Adjust table prefix string check in setup-config.php for the coding standards change in [42343]. 2018-09-20 05:15:25 +00:00
term.php General: Further improve error messages following [42648]. 2018-02-19 02:13:32 +00:00
theme-editor.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
theme-install.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
themes.php Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard. 2019-01-09 20:05:49 +00:00
tools.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
update-core.php Install/Upgrade: Link to HelpHub instead of the Codex. 2019-01-08 03:29:48 +00:00
update.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
upgrade-functions.php Code is Poetry. 2017-11-30 23:11:00 +00:00
upgrade.php Install/Upgrade: Link to HelpHub instead of the Codex. 2019-01-08 03:29:48 +00:00
upload.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
user-edit.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
user-new.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
users.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
widgets.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00