Make WordPress Core


Ignore:
Timestamp:
12/10/2021 12:04:03 AM (4 years ago)
Author:
peterwilsoncc
Message:

Upgrade/install: Revert upgrader rollback features.

Revert the rollback features introduced for theme and plugin upgrades during the WordPress 5.9 cycle. A bug (suspected to be in third party virtualisation software) causes the upgrades to fail consistently on some set ups. The revert is to allow contributors further time to investigate mitigation options.

Reverts [52337], [52289], [52284], [51951], [52192], [51902], [51899], [51898], [51815].

Props pbiron, dlh, peterwilsoncc, galbaras, SergeyBiryukov, afragen, costdev, bronsonquick, aristath, noisysocks, desrosj, TobiasBg, hellofromTonya, francina, Boniu91.
See #54543, #54166, #51857.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-site-health.php

    r51979 r52351  
    18841884
    18851885    /**
    1886      * Test available disk space for updates.
    1887      *
    1888      * @since 5.9.0
    1889      *
    1890      * @return array The test results.
    1891      */
    1892     public function get_test_available_updates_disk_space() {
    1893         $available_space       = function_exists( 'disk_free_space' ) ? (int) @disk_free_space( WP_CONTENT_DIR . '/upgrade/' ) : 0;
    1894         $available_space_in_mb = $available_space / MB_IN_BYTES;
    1895 
    1896         $result = array(
    1897             'label'       => __( 'Disk space available to safely perform updates' ),
    1898             'status'      => 'good',
    1899             'badge'       => array(
    1900                 'label' => __( 'Security' ),
    1901                 'color' => 'blue',
    1902             ),
    1903             'description' => sprintf(
    1904                 /* translators: %s: Available disk space in MB or GB. */
    1905                 '<p>' . __( '%s available disk space was detected, update routines can be performed safely.' ),
    1906                 size_format( $available_space )
    1907             ),
    1908             'actions'     => '',
    1909             'test'        => 'available_updates_disk_space',
    1910         );
    1911 
    1912         if ( $available_space_in_mb < 100 ) {
    1913             $result['description'] = __( 'Available disk space is low, less than 100 MB available.' );
    1914             $result['status']      = 'recommended';
    1915         }
    1916 
    1917         if ( $available_space_in_mb < 20 ) {
    1918             $result['description'] = __( 'Available disk space is critically low, less than 20 MB available. Proceed with caution, updates may fail.' );
    1919             $result['status']      = 'critical';
    1920         }
    1921 
    1922         if ( ! $available_space ) {
    1923             $result['description'] = __( 'Could not determine available disk space for updates.' );
    1924             $result['status']      = 'recommended';
    1925         }
    1926 
    1927         return $result;
    1928     }
    1929 
    1930     /**
    1931      * Test if plugin and theme updates temp-backup directories are writable or can be created.
    1932      *
    1933      * @since 5.9.0
    1934      *
    1935      * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
    1936      *
    1937      * @return array The test results.
    1938      */
    1939     public function get_test_update_temp_backup_writable() {
    1940         global $wp_filesystem;
    1941 
    1942         $result = array(
    1943             'label'       => sprintf(
    1944                 /* translators: %s: temp-backup */
    1945                 __( 'Plugin and theme update %s directory is writable' ),
    1946                 'temp-backup'
    1947             ),
    1948             'status'      => 'good',
    1949             'badge'       => array(
    1950                 'label' => __( 'Security' ),
    1951                 'color' => 'blue',
    1952             ),
    1953             'description' => sprintf(
    1954                 /* translators: %s: wp-content/upgrade/temp-backup */
    1955                 '<p>' . __( 'The %s directory used to improve the stability of plugin and theme updates is writable.' ),
    1956                 '<code>wp-content/upgrade/temp-backup</code>'
    1957             ),
    1958             'actions'     => '',
    1959             'test'        => 'update_temp_backup_writable',
    1960         );
    1961 
    1962         if ( ! $wp_filesystem ) {
    1963             if ( ! function_exists( 'WP_Filesystem' ) ) {
    1964                 require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/file.php' );
    1965             }
    1966             WP_Filesystem();
    1967         }
    1968         $wp_content = $wp_filesystem->wp_content_dir();
    1969 
    1970         $upgrade_dir_exists      = $wp_filesystem->is_dir( "$wp_content/upgrade" );
    1971         $upgrade_dir_is_writable = $wp_filesystem->is_writable( "$wp_content/upgrade" );
    1972         $backup_dir_exists       = $wp_filesystem->is_dir( "$wp_content/upgrade/temp-backup" );
    1973         $backup_dir_is_writable  = $wp_filesystem->is_writable( "$wp_content/upgrade/temp-backup" );
    1974 
    1975         $plugins_dir_exists      = $wp_filesystem->is_dir( "$wp_content/upgrade/temp-backup/plugins" );
    1976         $plugins_dir_is_writable = $wp_filesystem->is_writable( "$wp_content/upgrade/temp-backup/plugins" );
    1977         $themes_dir_exists       = $wp_filesystem->is_dir( "$wp_content/upgrade/temp-backup/themes" );
    1978         $themes_dir_is_writable  = $wp_filesystem->is_writable( "$wp_content/upgrade/temp-backup/themes" );
    1979 
    1980         if ( $plugins_dir_exists && ! $plugins_dir_is_writable && $themes_dir_exists && ! $themes_dir_is_writable ) {
    1981             $result['status'] = 'critical';
    1982             $result['label']  = sprintf(
    1983                 /* translators: %s: temp-backup */
    1984                 __( 'Plugins and themes %s directories exist but are not writable' ),
    1985                 'temp-backup'
    1986             );
    1987             $result['description'] = sprintf(
    1988                 /* translators: 1: wp-content/upgrade/temp-backup/plugins, 2: wp-content/upgrade/temp-backup/themes. */
    1989                 '<p>' . __( 'The %1$s and %2$s directories exist but are not writable. These directories are used to improve the stability of plugin updates. Please make sure the server has write permissions to these directories.' ) . '</p>',
    1990                 '<code>wp-content/upgrade/temp-backup/plugins</code>',
    1991                 '<code>wp-content/upgrade/temp-backup/themes</code>'
    1992             );
    1993             return $result;
    1994         }
    1995 
    1996         if ( $plugins_dir_exists && ! $plugins_dir_is_writable ) {
    1997             $result['status'] = 'critical';
    1998             $result['label']  = sprintf(
    1999                 /* translators: %s: temp-backup */
    2000                 __( 'Plugins %s directory exists but is not writable' ),
    2001                 'temp-backup'
    2002             );
    2003             $result['description'] = sprintf(
    2004                 /* translators: %s: wp-content/upgrade/temp-backup/plugins */
    2005                 '<p>' . __( 'The %s directory exists but is not writable. This directory is used to improve the stability of plugin updates. Please make sure the server has write permissions to this directory.' ) . '</p>',
    2006                 '<code>wp-content/upgrade/temp-backup/plugins</code>'
    2007             );
    2008             return $result;
    2009         }
    2010 
    2011         if ( $themes_dir_exists && ! $themes_dir_is_writable ) {
    2012             $result['status'] = 'critical';
    2013             $result['label']  = sprintf(
    2014                 /* translators: %s: temp-backup */
    2015                 __( 'Themes %s directory exists but is not writable' ),
    2016                 'temp-backup'
    2017             );
    2018             $result['description'] = sprintf(
    2019                 /* translators: %s: wp-content/upgrade/temp-backup/themes */
    2020                 '<p>' . __( 'The %s directory exists but is not writable. This directory is used to improve the stability of theme updates. Please make sure the server has write permissions to this directory.' ) . '</p>',
    2021                 '<code>wp-content/upgrade/temp-backup/themes</code>'
    2022             );
    2023             return $result;
    2024         }
    2025 
    2026         if ( ( ! $plugins_dir_exists || ! $themes_dir_exists ) && $backup_dir_exists && ! $backup_dir_is_writable ) {
    2027             $result['status'] = 'critical';
    2028             $result['label']  = sprintf(
    2029                 /* translators: %s: temp-backup */
    2030                 __( 'The %s directory exists but is not writable' ),
    2031                 'temp-backup'
    2032             );
    2033             $result['description'] = sprintf(
    2034                 /* translators: %s: wp-content/upgrade/temp-backup */
    2035                 '<p>' . __( 'The %s directory exists but is not writable. This directory is used to improve the stability of plugin and theme updates. Please make sure the server has write permissions to this directory.' ) . '</p>',
    2036                 '<code>wp-content/upgrade/temp-backup</code>'
    2037             );
    2038             return $result;
    2039         }
    2040 
    2041         if ( ! $backup_dir_exists && $upgrade_dir_exists && ! $upgrade_dir_is_writable ) {
    2042             $result['status'] = 'critical';
    2043             $result['label']  = sprintf(
    2044                 /* translators: %s: upgrade */
    2045                 __( 'The %s directory exists but is not writable' ),
    2046                 'upgrade'
    2047             );
    2048             $result['description'] = sprintf(
    2049                 /* translators: %s: wp-content/upgrade */
    2050                 '<p>' . __( 'The %s directory exists but is not writable. This directory is used for plugin and theme updates. Please make sure the server has write permissions to this directory.' ) . '</p>',
    2051                 '<code>wp-content/upgrade</code>'
    2052             );
    2053             return $result;
    2054         }
    2055 
    2056         if ( ! $upgrade_dir_exists && ! $wp_filesystem->is_writable( $wp_content ) ) {
    2057             $result['status'] = 'critical';
    2058             $result['label']  = sprintf(
    2059                 /* translators: %s: upgrade */
    2060                 __( 'The %s directory cannot be created' ),
    2061                 'upgrade'
    2062             );
    2063             $result['description'] = sprintf(
    2064                 /* translators: 1: wp-content/upgrade, 2: wp-content. */
    2065                 '<p>' . __( 'The %1$s directory does not exist, and the server does not have write permissions in %2$s to create it. This directory is used for plugin and theme updates. Please make sure the server has write permissions in %2$s.' ) . '</p>',
    2066                 '<code>wp-content/upgrade</code>',
    2067                 '<code>wp-content</code>'
    2068             );
    2069             return $result;
    2070         }
    2071 
    2072         return $result;
    2073     }
    2074 
    2075     /**
    20761886     * Test if loopbacks work as expected.
    20771887     *
     
    24572267        $tests = array(
    24582268            'direct' => array(
    2459                 'wordpress_version'            => array(
     2269                'wordpress_version'         => array(
    24602270                    'label' => __( 'WordPress Version' ),
    24612271                    'test'  => 'wordpress_version',
    24622272                ),
    2463                 'plugin_version'               => array(
     2273                'plugin_version'            => array(
    24642274                    'label' => __( 'Plugin Versions' ),
    24652275                    'test'  => 'plugin_version',
    24662276                ),
    2467                 'theme_version'                => array(
     2277                'theme_version'             => array(
    24682278                    'label' => __( 'Theme Versions' ),
    24692279                    'test'  => 'theme_version',
    24702280                ),
    2471                 'php_version'                  => array(
     2281                'php_version'               => array(
    24722282                    'label' => __( 'PHP Version' ),
    24732283                    'test'  => 'php_version',
    24742284                ),
    2475                 'php_extensions'               => array(
     2285                'php_extensions'            => array(
    24762286                    'label' => __( 'PHP Extensions' ),
    24772287                    'test'  => 'php_extensions',
    24782288                ),
    2479                 'php_default_timezone'         => array(
     2289                'php_default_timezone'      => array(
    24802290                    'label' => __( 'PHP Default Timezone' ),
    24812291                    'test'  => 'php_default_timezone',
    24822292                ),
    2483                 'php_sessions'                 => array(
     2293                'php_sessions'              => array(
    24842294                    'label' => __( 'PHP Sessions' ),
    24852295                    'test'  => 'php_sessions',
    24862296                ),
    2487                 'sql_server'                   => array(
     2297                'sql_server'                => array(
    24882298                    'label' => __( 'Database Server version' ),
    24892299                    'test'  => 'sql_server',
    24902300                ),
    2491                 'utf8mb4_support'              => array(
     2301                'utf8mb4_support'           => array(
    24922302                    'label' => __( 'MySQL utf8mb4 support' ),
    24932303                    'test'  => 'utf8mb4_support',
    24942304                ),
    2495                 'ssl_support'                  => array(
     2305                'ssl_support'               => array(
    24962306                    'label' => __( 'Secure communication' ),
    24972307                    'test'  => 'ssl_support',
    24982308                ),
    2499                 'scheduled_events'             => array(
     2309                'scheduled_events'          => array(
    25002310                    'label' => __( 'Scheduled events' ),
    25012311                    'test'  => 'scheduled_events',
    25022312                ),
    2503                 'http_requests'                => array(
     2313                'http_requests'             => array(
    25042314                    'label' => __( 'HTTP Requests' ),
    25052315                    'test'  => 'http_requests',
    25062316                ),
    2507                 'rest_availability'            => array(
     2317                'rest_availability'         => array(
    25082318                    'label'     => __( 'REST API availability' ),
    25092319                    'test'      => 'rest_availability',
    25102320                    'skip_cron' => true,
    25112321                ),
    2512                 'debug_enabled'                => array(
     2322                'debug_enabled'             => array(
    25132323                    'label' => __( 'Debugging enabled' ),
    25142324                    'test'  => 'is_in_debug_mode',
    25152325                ),
    2516                 'file_uploads'                 => array(
     2326                'file_uploads'              => array(
    25172327                    'label' => __( 'File uploads' ),
    25182328                    'test'  => 'file_uploads',
    25192329                ),
    2520                 'plugin_theme_auto_updates'    => array(
     2330                'plugin_theme_auto_updates' => array(
    25212331                    'label' => __( 'Plugin and theme auto-updates' ),
    25222332                    'test'  => 'plugin_theme_auto_updates',
    2523                 ),
    2524                 'update_temp_backup_writable'  => array(
    2525                     /* translators: %s: temp-backup */
    2526                     'label' => sprintf( __( 'Updates %s directory access' ), 'temp-backup' ),
    2527                     'test'  => 'update_temp_backup_writable',
    2528                 ),
    2529                 'available_updates_disk_space' => array(
    2530                     'label' => __( 'Available disk space' ),
    2531                     'test'  => 'available_updates_disk_space',
    25322333                ),
    25332334            ),
Note: See TracChangeset for help on using the changeset viewer.