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
..
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
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
Requests
SimplePie
Text External Libraries: Remove usage of `each()` from the `Text_Diff_Engine_native` class. 2017-10-26 12:52:53 +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
images Build: Update images following [43684]. 2018-12-19 03:36:27 +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
rest-api REST API: Introduce `rest_post_search_query` filter. 2019-01-08 21:45:48 +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-IXR.php
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-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-rss.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.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