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

 2020/05/31 · 网站建设 · 1,160次 ·  0

今天直接进入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
温馨提示:本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
版权声明:本文为原创文章,版权归 墨情博客 所有,欢迎分享本文,转载请保留出处!

 发表评论


验证码: