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(