diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/load.php --- a/wp/wp-includes/load.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/load.php Fri Sep 05 18:52:52 2025 +0200 @@ -147,11 +147,12 @@ * @since 3.0.0 * @access private * - * @global string $required_php_version The required PHP version string. - * @global string $wp_version The WordPress version string. + * @global string $required_php_version The required PHP version string. + * @global string[] $required_php_extensions The names of required PHP extensions. + * @global string $wp_version The WordPress version string. */ function wp_check_php_mysql_versions() { - global $required_php_version, $wp_version; + global $required_php_version, $required_php_extensions, $wp_version; $php_version = PHP_VERSION; @@ -168,6 +169,30 @@ exit( 1 ); } + $missing_extensions = array(); + + if ( isset( $required_php_extensions ) && is_array( $required_php_extensions ) ) { + foreach ( $required_php_extensions as $extension ) { + if ( extension_loaded( $extension ) ) { + continue; + } + + $missing_extensions[] = sprintf( + 'WordPress %1$s requires the %2$s PHP extension.', + $wp_version, + $extension + ); + } + } + + if ( count( $missing_extensions ) > 0 ) { + $protocol = wp_get_server_protocol(); + header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 ); + header( 'Content-Type: text/html; charset=utf-8' ); + echo implode( '
', $missing_extensions ); + exit( 1 ); + } + // This runs before default constants are defined, so we can't assume WP_CONTENT_DIR is set yet. $wp_content_dir = defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR : ABSPATH . 'wp-content'; @@ -453,8 +478,6 @@ /** * Gets the time elapsed so far during this PHP script. * - * Uses REQUEST_TIME_FLOAT that appeared in PHP 5.4.0. - * * @since 5.8.0 * * @return float Seconds since the PHP script started. @@ -878,6 +901,7 @@ 'blog-lookup', 'blog_meta', 'global-posts', + 'image_editor', 'networks', 'network-queries', 'sites', @@ -1430,6 +1454,18 @@ } /** + * Converts a value to non-negative integer. + * + * @since 2.5.0 + * + * @param mixed $maybeint Data you wish to have converted to a non-negative integer. + * @return int A non-negative integer. + */ +function absint( $maybeint ) { + return abs( (int) $maybeint ); +} + +/** * Retrieves the current site ID. * * @since 3.1.0 @@ -1681,9 +1717,8 @@ } } - // Bit operator to workaround https://bugs.php.net/bug.php?id=44936 which changes access level to 63 in PHP 5.2.6 - 5.2.17. if ( isset( $ini_all[ $setting ]['access'] ) - && ( INI_ALL === ( $ini_all[ $setting ]['access'] & 7 ) || INI_USER === ( $ini_all[ $setting ]['access'] & 7 ) ) + && ( INI_ALL === $ini_all[ $setting ]['access'] || INI_USER === $ini_all[ $setting ]['access'] ) ) { return true; } @@ -1809,8 +1844,20 @@ $key = substr( sanitize_key( wp_unslash( $_REQUEST['wp_scrape_key'] ) ), 0, 32 ); $nonce = wp_unslash( $_REQUEST['wp_scrape_nonce'] ); + if ( empty( $key ) || empty( $nonce ) ) { + return; + } - if ( get_transient( 'scrape_key_' . $key ) !== $nonce ) { + $transient = get_transient( 'scrape_key_' . $key ); + if ( false === $transient ) { + return; + } + + if ( $transient !== $nonce ) { + if ( ! headers_sent() ) { + header( 'X-Robots-Tag: noindex' ); + nocache_headers(); + } echo "###### wp_scraping_result_start:$key ######"; echo wp_json_encode( array(