Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.
wordpress未能与站点联系来检查致命错误
编辑了css文件,css文件又是正常的。
原因:
出现这个问题都是因为我wordpress更新到了目前最新的版本5.72所致,这是wordpress的一个BUG。
解决办法:
打开wp-admin/includes/file.php文件,删除492-599行的如下代码:
- if ( $is_active && ‘php’ === $extension ) {
- $scrape_key = md5( rand() );
- $transient = ‘scrape_key_’ . $scrape_key;
- $scrape_nonce = strval( rand() );
- set_transient( $transient, $scrape_nonce, 60 ); // It shouldn’t take more than 60 seconds to make the two loopback requests.
- $cookies = wp_unslash( $_COOKIE );
- $scrape_params = array(
- ‘wp_scrape_key’ => $scrape_key,
- ‘wp_scrape_nonce’ => $scrape_nonce,
- );
- $headers = array(
- ‘Cache-Control’ => ‘no-cache’,
- );
- // Include Basic auth in loopback requests.
- if ( isset( $_SERVER[‘PHP_AUTH_USER’] ) && isset( $_SERVER[‘PHP_AUTH_PW’] ) ) {
- $headers[‘Authorization’] = ‘Basic ‘ . base64_encode( wp_unslash( $_SERVER[‘PHP_AUTH_USER’] ) . ‘:’ . wp_unslash( $_SERVER[‘PHP_AUTH_PW’] ) );
- }
- // Make sure PHP process doesn’t die before loopback requests complete.
- @set_time_limit( 300 );
- // Time to wait for loopback requests to finish.
- $timeout = 100;
- $needle_start = “###### wp_scraping_result_start:$scrape_key ######”;
- $needle_end = “###### wp_scraping_result_end:$scrape_key ######”;
- // Attempt loopback request to editor to see if user just whitescreened themselves.
- if ( $plugin ) {
- $url = add_query_arg( compact( ‘plugin’, ‘file’ ), admin_url( ‘plugin-editor.php’ ) );
- } elseif ( isset( $stylesheet ) ) {
- $url = add_query_arg(
- array(
- ‘theme’ => $stylesheet,
- ‘file’ => $file,
- ),
- admin_url( ‘theme-editor.php’ )
- );
- } else {
- $url = admin_url();
- }
- $url = add_query_arg( $scrape_params, $url );
- $r = wp_remote_get( $url, compact( ‘cookies’, ‘headers’, ‘timeout’ ) );
- $body = wp_remote_retrieve_body( $r );
- $scrape_result_position = strpos( $body, $needle_start );
- $loopback_request_failure = array(
- ‘code’ => ‘loopback_request_failed’,
- ‘message’ => __( ‘Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.’ ),
- );
- $json_parse_failure = array(
- ‘code’ => ‘json_parse_error’,
- );
- $result = null;
- if ( false === $scrape_result_position ) {
- $result = $loopback_request_failure;
- } else {
- $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
- $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
- $result = json_decode( trim( $error_output ), true );
- if ( emptyempty( $result ) ) {
- $result = $json_parse_failure;
- }
- }
- // Try making request to homepage as well to see if visitors have been whitescreened.
- if ( true === $result ) {
- $url = home_url( ‘/’ );
- $url = add_query_arg( $scrape_params, $url );
- $r = wp_remote_get( $url, compact( ‘cookies’, ‘headers’, ‘timeout’ ) );
- $body = wp_remote_retrieve_body( $r );
- $scrape_result_position = strpos( $body, $needle_start );
- if ( false === $scrape_result_position ) {
- $result = $loopback_request_failure;
- } else {
- $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
- $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
- $result = json_decode( trim( $error_output ), true );
- if ( emptyempty( $result ) ) {
- $result = $json_parse_failure;
- }
- }
- }
- delete_transient( $transient );
- if ( true !== $result ) {
- // Roll-back file change.
- file_put_contents( $real_file, $previous_content );
- if ( function_exists( ‘opcache_invalidate’ ) ) {
- opcache_invalidate( $real_file, true );
- }
- if ( ! isset( $result[‘message’] ) ) {
- $message = __( ‘An unidentified error has occurred.’ );
- } else {
- $message = $result[‘message’];
- unset( $result[‘message’] );
- }
- return new WP_Error( ‘php_error’, $message, $result );
- }
- }