wordpress未能与站点联系来检查致命错误

原创  admin  2020-05-31 14:42  179次阅读   评论 0 条

今天直接进入wordpress后台直接编辑主题文件来删除某一段代码,但是当我点击“更新文件”的时候提示了一个错误:
wordpress未能与站点联系来检查致命错误-墨情博客
编辑了css文件,css文件又是正常的。

原因:

出现这个问题都是因为我wordpress更新到了目前最新的版本5.41所致,这是wordpress的一个BUG。

解决办法:

打开wp-admin/includes/file.php文件,删除492-599行的如下代码:

  1. if ( $is_active && 'php' === $extension ) {  
  2.    
  3.  $scrape_key = md5( rand() );  
  4.  $transient = 'scrape_key_' . $scrape_key;  
  5.  $scrape_nonce = strval( rand() );  
  6.  set_transient( $transient$scrape_nonce, 60 ); // It shouldn't take more than 60 seconds to make the two loopback requests.  
  7.    
  8.  $cookies = wp_unslash( $_COOKIE );  
  9.  $scrape_params = array(  
  10.  'wp_scrape_key' => $scrape_key,  
  11.  'wp_scrape_nonce' => $scrape_nonce,  
  12.  );  
  13.  $headers = array(  
  14.  'Cache-Control' => 'no-cache',  
  15.  );  
  16.    
  17.  // Include Basic auth in loopback requests.  
  18.  if ( isset( $_SERVER['PHP_AUTH_USER'] ) && isset( $_SERVER['PHP_AUTH_PW'] ) ) {  
  19.  $headers['Authorization'] = 'Basic ' . base64_encode( wp_unslash( $_SERVER['PHP_AUTH_USER'] ) . ':' . wp_unslash( $_SERVER['PHP_AUTH_PW'] ) );  
  20.  }  
  21.    
  22.  // Make sure PHP process doesn't die before loopback requests complete.  
  23.  @set_time_limit( 300 );  
  24.    
  25.  // Time to wait for loopback requests to finish.  
  26.  $timeout = 100;  
  27.    
  28.  $needle_start = "###### wp_scraping_result_start:$scrape_key ######";  
  29.  $needle_end = "###### wp_scraping_result_end:$scrape_key ######";  
  30.    
  31.  // Attempt loopback request to editor to see if user just whitescreened themselves.  
  32.  if ( $plugin ) {  
  33.  $url = add_query_arg( compact( 'plugin', 'file' ), admin_url( 'plugin-editor.php' ) );  
  34.  } elseif ( isset( $stylesheet ) ) {  
  35.  $url = add_query_arg(  
  36.  array(  
  37.  'theme' => $stylesheet,  
  38.  'file' => $file,  
  39.  ),  
  40.  admin_url( 'theme-editor.php' )  
  41.  );  
  42.  } else {  
  43.  $url = admin_url();  
  44.  }  
  45.  $url = add_query_arg( $scrape_params$url );  
  46.  $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );  
  47.  $body = wp_remote_retrieve_body( $r );  
  48.  $scrape_result_position = strpos$body$needle_start );  
  49.    
  50.  $loopback_request_failure = array(  
  51.  'code' => 'loopback_request_failed',  
  52.  '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.' ),  
  53.  );  
  54.  $json_parse_failure = array(  
  55.  'code' => 'json_parse_error',  
  56.  );  
  57.    
  58.  $result = null;  
  59.  if ( false === $scrape_result_position ) {  
  60.  $result = $loopback_request_failure;  
  61.  } else {  
  62.  $error_output = substr$body$scrape_result_position + strlen$needle_start ) );  
  63.  $error_output = substr$error_output, 0, strpos$error_output$needle_end ) );  
  64.  $result = json_decode( trim( $error_output ), true );  
  65.  if ( emptyempty$result ) ) {  
  66.  $result = $json_parse_failure;  
  67.  }  
  68.  }  
  69.    
  70.  // Try making request to homepage as well to see if visitors have been whitescreened.  
  71.  if ( true === $result ) {  
  72.  $url = home_url( '/' );  
  73.  $url = add_query_arg( $scrape_params$url );  
  74.  $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );  
  75.  $body = wp_remote_retrieve_body( $r );  
  76.  $scrape_result_position = strpos$body$needle_start );  
  77.    
  78.  if ( false === $scrape_result_position ) {  
  79.  $result = $loopback_request_failure;  
  80.  } else {  
  81.  $error_output = substr$body$scrape_result_position + strlen$needle_start ) );  
  82.  $error_output = substr$error_output, 0, strpos$error_output$needle_end ) );  
  83.  $result = json_decode( trim( $error_output ), true );  
  84.  if ( emptyempty$result ) ) {  
  85.  $result = $json_parse_failure;  
  86.  }  
  87.  }  
  88.  }  
  89.    
  90.  delete_transient( $transient );  
  91.    
  92.  if ( true !== $result ) {  
  93.    
  94.  // Roll-back file change.  
  95.  file_put_contents$real_file$previous_content );  
  96.  if ( function_exists( 'opcache_invalidate' ) ) {  
  97.  opcache_invalidate( $real_file, true );  
  98.  }  
  99.    
  100.  if ( ! isset( $result['message'] ) ) {  
  101.  $message = __( 'An unidentified error has occurred.' );  
  102.  } else {  
  103.  $message = $result['message'];  
  104.  unset( $result['message'] );  
  105.  }  
  106.  return new WP_Error( 'php_error', $message$result );  
  107.  }  
  108.    
  109.   
  110.  }  
本文地址:https://www.13qing.com/103.html
关注我们:关注请扫描底部右下角二维码,公众号:nygzs166
温馨提示:文章内容系作者个人观点,不代表 墨情博客对观点赞同或支持。
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!


 发表评论


表情