WordPress/wp-includes
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
..
blocks Block Editor: Upgrade @wordpress packages to match version 4.7.1. 2018-12-19 03:16:48 +00:00
certificates
css Block Editor: Upgrade @WordPress packages to the latest versions. 2019-01-04 19:38:57 +00:00
customize Docs: Add docblocks to the members of WP_Widget_Form_Customize_Control. 2019-01-09 05:49:49 +00:00
fonts
ID3 Media: update the getID3 library to version 1.9.14 to avoid fatal errors in PHP7. 2017-07-31 19:50:45 +00:00
images Build: Update images following [43684]. 2018-12-19 03:36:27 +00:00
IXR XML-RPC: Add default values to IXR_Message for PHP 7.2 compatibility to avoid PHP Warnings. 2018-02-06 02:56:32 +00:00
js Block Editor: Upgrade @WordPress packages to the latest versions. 2019-01-04 19:38:57 +00:00
pomo Docs: Add missing @return notations to three MO method DocBlocks. 2018-12-19 17:04:48 +00:00
random_compat External Libraries: Update Random_Compat from 1.2.1 to 2.0.11. 2017-11-08 11:48:49 +00:00
Requests
rest-api REST API: Introduce rest_post_search_query filter. 2019-01-08 21:45:48 +00:00
SimplePie
Text External Libraries: Remove usage of each() from the Text_Diff_Engine_native class. 2017-10-26 12:52:53 +00:00
theme-compat Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
widgets Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
admin-bar.php Multisite: Display registered new_item text for post post type in My Sites menu. 2018-08-29 15:50:25 +00:00
atomlib.php
author-template.php Docs: Correct the documentation for wp_list_authors(). 2019-01-09 06:52:50 +00:00
blocks.php Formatting: Remove unused global import for $wp_filter in _restore_wpautop_hook(). 2019-01-07 16:59:52 +00:00
bookmark-template.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
bookmark.php Code is Poetry. 2017-11-30 23:11:00 +00:00
cache.php Code is Poetry. 2017-11-30 23:11:00 +00:00
canonical.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
capabilities.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
category-template.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
category.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-feed.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-http.php Docs: Update since annotation for new $url parameter for several HTTP related filters. 2019-01-04 21:58:51 +00:00
class-IXR.php
class-json.php Docs: Fix typo in Services_JSON DocBlocks. 2018-06-28 02:20:54 +00:00
class-oembed.php Embeds: Fix typo introduced in [44484]. 2019-01-09 10:54:51 +00:00
class-phpass.php
class-phpmailer.php
class-pop3.php
class-requests.php
class-simplepie.php
class-smtp.php
class-snoopy.php
class-walker-category-dropdown.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-walker-category.php Taxonomy: Escape CSS classes in Walker_Category::start_el() after the category_css_class filter runs. 2019-01-07 12:54:48 +00:00
class-walker-comment.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-walker-nav-menu.php Docs: Correct and improve various inline documentation. 2018-03-25 19:35:29 +00:00
class-walker-page-dropdown.php Docs: Correctly specify the $page parameter of list_pages filter as a WP_Post. 2018-12-20 20:04:50 +00:00
class-walker-page.php Accessibility: Themes: use aria-current for the Walker_Page current link. 2019-01-07 13:36:50 +00:00
class-wp-admin-bar.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-ajax-response.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-block-parser.php Script Loader: Load unminified package vendor scripts when SCRIPT_DEBUG is set. 2019-01-04 20:27:49 +00:00
class-wp-block-type-registry.php Blocks: Introduce WP_Block_Type and WP_Block_Type_Registry classes. 2018-12-13 09:44:23 +00:00
class-wp-block-type.php REST API: Preserve unknown, respect null in server-side block rendering. 2018-12-17 18:00:52 +00:00
class-wp-comment-query.php Docs: Fix typo in the description of status parameter of WP_Comment_Query. 2019-01-07 11:38:50 +00:00
class-wp-comment.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-customize-control.php Docs: Remove @static notations from property DocBlocks in wp-admin/* and wp-includes/* classes. 2018-02-25 20:32:30 +00:00
class-wp-customize-manager.php Docs: Future-proof comments referencing 5.0 TODOs. 2018-12-17 03:07:55 +00:00
class-wp-customize-nav-menus.php Customizer: Remove a line of commented-out code in WP_Customize_Nav_Menus::customize_register(). 2018-12-19 07:23:47 +00:00
class-wp-customize-panel.php Docs: Remove @static notations from property DocBlocks in wp-admin/* and wp-includes/* classes. 2018-02-25 20:32:30 +00:00
class-wp-customize-section.php Docs: Remove @static notations from property DocBlocks in wp-admin/* and wp-includes/* classes. 2018-02-25 20:32:30 +00:00
class-wp-customize-setting.php General: Introduce WP_Error::has_errors() method and use it where appropriate. 2018-02-27 02:31:31 +00:00
class-wp-customize-widgets.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-dependency.php I18N: Add JavaScript translation support. 2018-12-14 05:52:52 +00:00
class-wp-editor.php Editor: Fix name of the new editor for inline comment. 2019-01-05 03:48:50 +00:00
class-wp-embed.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-error.php General: Introduce WP_Error::has_errors() method and use it where appropriate. 2018-02-27 02:31:31 +00:00
class-wp-feed-cache-transient.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-feed-cache.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-hook.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-http-cookie.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-http-curl.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-http-encoding.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-http-ixr-client.php Docs: Document more parameters and properties using typed array notation. 2018-03-25 19:33:31 +00:00
class-wp-http-proxy.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-http-requests-hooks.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-http-requests-response.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-http-response.php HTTP API: Use WP_HTTP_Response::set_data() in ::__construct() instead of directly accessing the $data property. 2017-10-03 15:18:46 +00:00
class-wp-http-streams.php Docs: Update since annotation for new $url parameter for several HTTP related filters. 2019-01-04 21:58:51 +00:00
class-wp-image-editor-gd.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-image-editor-imagick.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-image-editor.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-list-util.php General: Allow wp_list_pluck() to operate on arrays of references without overwriting the referenced items. 2018-01-18 05:18:31 +00:00
class-wp-locale-switcher.php REST API: Render response in user locale with ?_locale=user. 2018-12-14 01:32:39 +00:00
class-wp-locale.php I18N: Remove unused $start_of_week property from WP_Locale. 2018-02-18 16:32:34 +00:00
class-wp-matchesmapregex.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-meta-query.php Docs: Update since annotations for adding LIKE comparisons with meta keys. 2019-01-09 14:55:49 +00:00
class-wp-metadata-lazyloader.php Docs: Correct and improve various inline documentation. 2018-03-25 19:35:29 +00:00
class-wp-network-query.php PHP7.3 compatibility: Fix compact throwing notices. 2018-12-14 05:13:52 +00:00
class-wp-network.php Docs: Document more parameters and properties using typed array notation. 2018-03-25 19:33:31 +00:00
class-wp-oembed-controller.php Embeds: Filter HTML response in oEmbed proxy controller. 2018-12-14 03:20:37 +00:00
class-wp-paused-extensions-storage.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
class-wp-post-type.php Docs: Remove @access notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-post.php Docs: Update and correct various inline documentation. 2018-05-07 17:20:22 +00:00
class-wp-query.php Docs: Update since annotations for adding LIKE comparisons with meta keys. 2019-01-09 14:55:49 +00:00
class-wp-rewrite.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-role.php Docs: Document more parameters and properties using typed array notation. 2018-03-25 19:33:31 +00:00
class-wp-roles.php Docs: Document WP_Roles properties with typed array notation. 2018-03-22 18:56:33 +00:00
class-wp-session-tokens.php Docs: Correct and improve docblocks for user session management functionality. 2018-09-14 13:45:26 +00:00
class-wp-shutdown-handler.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
class-wp-simplepie-file.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-simplepie-sanitize-kses.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-site-query.php Multisite: Update @since tags for site meta introduction. 2019-01-08 08:18:50 +00:00
class-wp-site.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-tax-query.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-taxonomy.php Taxonomy: Update @since annotations for meta_box_sanitize_cb arg. 2019-01-09 15:11:48 +00:00
class-wp-term-query.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-term.php Docs: Remove @static notations from method DocBlocks in wp-includes/* classes. 2018-02-25 20:22:30 +00:00
class-wp-text-diff-renderer-inline.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-text-diff-renderer-table.php Revisions: Improve performance of WP_Text_Diff_Renderer_Table. 2018-12-14 01:04:36 +00:00
class-wp-theme.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
class-wp-user-meta-session-tokens.php Docs: Add @see WP_Session_Tokens to the WP_User_Meta_Session_Tokens docblock. 2019-01-09 05:04:50 +00:00
class-wp-user-query.php Docs: Correct @since tag for users_pre_query filter added in [44373]. 2019-01-07 07:56:50 +00:00
class-wp-user.php Users: Add LIMIT 1 to SQL query in WP_User::get_data_by(), as only one row is requested. 2018-09-23 15:33:24 +00:00
class-wp-walker.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-widget-factory.php Code is Poetry. 2017-11-30 23:11:00 +00:00
class-wp-widget.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
class-wp-xmlrpc-server.php PHP7.3 compatibility: Fix compact throwing notices. 2018-12-14 05:13:52 +00:00
class-wp.php Multisite: Validate activation links. 2018-12-13 01:26:24 +00:00
class.wp-dependencies.php Docs: Document that the $src parameter of WP_Dependencies::add() can be boolean. 2018-09-28 21:51:24 +00:00
class.wp-scripts.php I18N/Script Loader: Support text domains other than "messages". 2019-01-06 16:23:49 +00:00
class.wp-styles.php Script/Style Dependencies: Simplify some logic in WP_Styles::do_item(). 2018-08-11 17:42:24 +00:00
comment-template.php Docs: Fix the @param types for `comments_popup_link(). 2019-01-08 04:50:51 +00:00
comment.php Update since annotation on allow_empty_comment hook. 2018-12-28 13:42:50 +00:00
compat.php General: In the is_countable() polyfill, if the provided object implements SimpleXMLElement or ResourceBundle, consider it countable. 2018-05-10 17:58:22 +00:00
cron.php Cron API: Add function and filter to return ready cron jobs. 2019-01-08 21:49:49 +00:00
date.php Docs: Correct and improve various inline documentation. 2018-03-25 19:35:29 +00:00
default-constants.php Bundled Themes: Make twentynineteen the default theme. 2018-12-14 02:49:38 +00:00
default-filters.php Styles: Add helper functions for loading block styles. 2018-12-14 03:36:38 +00:00
default-widgets.php Widgets: Introduce Gallery widget for displaying image galleries. 2017-09-25 06:28:45 +00:00
deprecated.php Administration: Change all the occurrences of "(opens in a new window)" to "(opens in a new tab)". 2018-05-05 09:45:22 +00:00
embed-template.php
embed.php Build tools: Allow building WordPress to src. 2018-12-24 13:29:50 +00:00
error-protection.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
feed-atom-comments.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed-atom.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed-rdf.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed-rss2-comments.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed-rss2.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed-rss.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
feed.php Docs: Remove erroneous zero-width space before URL in fetch_feed() DocBlock. 2017-12-21 02:40:54 +00:00
formatting.php Block Editor: Update @wordpress dependencies. 2018-12-17 04:52:00 +00:00
functions.php Filesystem: Improve wp_is_stream() performance. 2019-01-09 09:51:54 +00:00
functions.wp-scripts.php I18N: Make domain argument optional in wp_set_script_translations() / WP_Scripts::set_translations(). 2019-01-04 21:12:50 +00:00
functions.wp-styles.php Docs: Fix typo in wp_add_inline_script() and wp_add_inline_style() description. 2018-12-20 02:42:48 +00:00
general-template.php Administration: Update default fallback color for SVG icons. 2018-12-20 19:01:48 +00:00
http.php HTTP: Don't treat localhost as same host by default. 2018-04-03 15:00:31 +00:00
kses.php PHPCS: Fix alignment issues. 2018-12-18 16:58:48 +00:00
l10n.php I18N: Add option to hide en_US locale in wp_dropdown_languages(). 2019-01-09 11:46:50 +00:00
link-template.php Comments: Add a new is_avatar_comment_type() function. 2019-01-09 06:00:51 +00:00
load.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
locale.php
media-template.php PHPCS: Fix errors 2018-12-11 04:45:23 +00:00
media.php Docs: Ensure the optional $width and $height parameters are documented as such with defaults in the add_image_size() DocBlock. 2018-12-19 07:26:47 +00:00
meta.php REST API: Move object type-specific metadata integrations from the wrapper functions to the low-level Meta API functions. 2018-12-12 03:02:24 +00:00
ms-blogs.php Multisite: Introduce ms-site.php and ms-network.php files. 2019-01-08 09:15:49 +00:00
ms-default-constants.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-default-filters.php Multisite: Move site-specific metadata integrations from the wrapper functions to the low-level Meta API functions. 2019-01-08 08:48:48 +00:00
ms-deprecated.php Multisite: Update @since tags for site management APIs. 2019-01-08 08:58:49 +00:00
ms-files.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-functions.php Multisite: Update @since tags for site management APIs. 2019-01-08 08:58:49 +00:00
ms-load.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
ms-network.php Multisite: Introduce ms-site.php and ms-network.php files. 2019-01-08 09:15:49 +00:00
ms-settings.php Code is Poetry. 2017-11-30 23:11:00 +00:00
ms-site.php Multisite: Introduce ms-site.php and ms-network.php files. 2019-01-08 09:15:49 +00:00
nav-menu-template.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
nav-menu.php Nav Menus: Fix a PHP 7.3 error when switching themes. 2018-12-14 05:16:52 +00:00
option.php Docs: Improve the @global tags in wp-includes/option.php. 2019-01-08 06:00:50 +00:00
pluggable-deprecated.php
pluggable.php Docs: Update since tag for X-Redirect-By header additions. 2019-01-03 18:11:52 +00:00
plugin.php Code is Poetry. 2017-11-30 23:11:00 +00:00
post-formats.php Post Formats: Don't assign a variable inside if statement in get_post_format(). 2018-08-30 09:01:25 +00:00
post-template.php Media: Add $attr to the wp_get_attachment_link filter. 2019-01-08 09:09:49 +00:00
post-thumbnail-template.php Pinking shears. 2018-03-18 14:23:33 +00:00
post.php Permalinks: Add a pre_wp_unique_post_slug filter. 2019-01-08 03:47:49 +00:00
query.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
registration-functions.php Code is Poetry. 2017-11-30 23:11:00 +00:00
registration.php Code is Poetry. 2017-11-30 23:11:00 +00:00
rest-api.php REST API: Improve performance by avoiding call_user_func(). 2018-12-14 06:04:55 +00:00
revision.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
rewrite.php Code is Poetry. 2017-11-30 23:11:00 +00:00
rss-functions.php Code is Poetry. 2017-11-30 23:11:00 +00:00
rss.php
script-loader.php I18N: Make domain argument optional in wp_set_script_translations() / WP_Scripts::set_translations(). 2019-01-04 21:12:50 +00:00
session.php Code is Poetry. 2017-11-30 23:11:00 +00:00
shortcodes.php Docs: Correct parameter name in strip_shortcodes_tagnames filter DocBlock. 2018-08-02 15:13:27 +00:00
spl-autoload-compat.php General: Move the __autoload() compat function into its own file to prevent deprecated notices being thrown by the compiler in PHP 7.2. 2017-07-28 01:15:52 +00:00
taxonomy.php Taxonomy: Update @since annotations for meta_box_sanitize_cb arg. 2019-01-09 15:11:48 +00:00
template-loader.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
template.php Docs: Add missing code formatting to various @since entries. 2018-02-09 16:55:31 +00:00
theme.php Themes: Document the new theme features being added. 2018-12-14 03:41:37 +00:00
update.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
user.php Privacy: Fix a code formatting error introduced in [44491]. 2019-01-09 04:33:50 +00:00
vars.php Code is Poetry. 2017-11-30 23:11:00 +00:00
version.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
widgets.php Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:51:36 +00:00
wlwmanifest.xml
wp-db.php Multisite: Update @since tags for site meta introduction. 2019-01-08 08:18:50 +00:00
wp-diff.php Code is Poetry. 2017-11-30 23:11:00 +00:00