Make WordPress Core

Changeset 46798


Ignore:
Timestamp:
11/28/2019 03:55:38 PM (5 years ago)
Author:
SergeyBiryukov
Message:

Site Health: Add a test for PHP default timezone.

The test reports a failure if the default timezone was changed with date_default_timezone_set() to anything other than UTC.

WordPress historically uses UTC as the default timezone for calculating date and time offsets, overriding it is not recommended and can cause widespread and obscure issues.

Props Rarst, Clorith, TimothyBlynJacobs.
Merges [46797] to the 5.3 branch.
Fixes #48692.

Location:
branches/5.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/5.3

  • branches/5.3/src/wp-admin/includes/class-wp-site-health.php

    r46402 r46798  
    10171017
    10181018    /**
     1019     * Test if the PHP default timezone is set to UTC.
     1020     *
     1021     * @since 5.3.1
     1022     *
     1023     * @return array The test results.
     1024     */
     1025    public function get_test_php_default_timezone() {
     1026        $result = array(
     1027            'label'       => __( 'PHP default timezone is valid' ),
     1028            'status'      => 'good',
     1029            'badge'       => array(
     1030                'label' => __( 'Performance' ),
     1031                'color' => 'blue',
     1032            ),
     1033            'description' => sprintf(
     1034                '<p>%s</p>',
     1035                __( 'PHP default timezone was configured by WordPress on loading. This is necessary for correct calculations of dates and times.' )
     1036            ),
     1037            'test'        => 'php_default_timezone',
     1038        );
     1039
     1040        if ( 'UTC' !== date_default_timezone_get() ) {
     1041            $result['status'] = 'critical';
     1042
     1043            $result['label'] = __( 'PHP default timezone is invalid' );
     1044
     1045            $result['description'] = sprintf(
     1046                '<p>%s</p>',
     1047                sprintf(
     1048                    /* translators: %s: date_default_timezone_set() */
     1049                    __( 'PHP default timezone was changed after WordPress loading by a %s function call. This interferes with correct calculations of dates and times.' ),
     1050                    '<code>date_default_timezone_set()</code>'
     1051                )
     1052            );
     1053        }
     1054
     1055        return $result;
     1056    }
     1057
     1058    /**
    10191059     * Test if the SQL server is up to date.
    10201060     *
     
    18431883        $tests = array(
    18441884            'direct' => array(
    1845                 'wordpress_version' => array(
     1885                'wordpress_version'    => array(
    18461886                    'label' => __( 'WordPress Version' ),
    18471887                    'test'  => 'wordpress_version',
    18481888                ),
    1849                 'plugin_version'    => array(
     1889                'plugin_version'       => array(
    18501890                    'label' => __( 'Plugin Versions' ),
    18511891                    'test'  => 'plugin_version',
    18521892                ),
    1853                 'theme_version'     => array(
     1893                'theme_version'        => array(
    18541894                    'label' => __( 'Theme Versions' ),
    18551895                    'test'  => 'theme_version',
    18561896                ),
    1857                 'php_version'       => array(
     1897                'php_version'          => array(
    18581898                    'label' => __( 'PHP Version' ),
    18591899                    'test'  => 'php_version',
    18601900                ),
    1861                 'sql_server'        => array(
     1901                'php_extensions'       => array(
     1902                    'label' => __( 'PHP Extensions' ),
     1903                    'test'  => 'php_extensions',
     1904                ),
     1905                'php_default_timezone' => array(
     1906                    'label' => __( 'PHP Default Timezone' ),
     1907                    'test'  => 'php_default_timezone',
     1908                ),
     1909                'sql_server'           => array(
    18621910                    'label' => __( 'Database Server version' ),
    18631911                    'test'  => 'sql_server',
    18641912                ),
    1865                 'php_extensions'    => array(
    1866                     'label' => __( 'PHP Extensions' ),
    1867                     'test'  => 'php_extensions',
    1868                 ),
    1869                 'utf8mb4_support'   => array(
     1913                'utf8mb4_support'      => array(
    18701914                    'label' => __( 'MySQL utf8mb4 support' ),
    18711915                    'test'  => 'utf8mb4_support',
    18721916                ),
    1873                 'https_status'      => array(
     1917                'https_status'         => array(
    18741918                    'label' => __( 'HTTPS status' ),
    18751919                    'test'  => 'https_status',
    18761920                ),
    1877                 'ssl_support'       => array(
     1921                'ssl_support'          => array(
    18781922                    'label' => __( 'Secure communication' ),
    18791923                    'test'  => 'ssl_support',
    18801924                ),
    1881                 'scheduled_events'  => array(
     1925                'scheduled_events'     => array(
    18821926                    'label' => __( 'Scheduled events' ),
    18831927                    'test'  => 'scheduled_events',
    18841928                ),
    1885                 'http_requests'     => array(
     1929                'http_requests'        => array(
    18861930                    'label' => __( 'HTTP Requests' ),
    18871931                    'test'  => 'http_requests',
    18881932                ),
    1889                 'debug_enabled'     => array(
     1933                'debug_enabled'        => array(
    18901934                    'label' => __( 'Debugging enabled' ),
    18911935                    'test'  => 'is_in_debug_mode',
Note: See TracChangeset for help on using the changeset viewer.