WordPress 網(wǎng)站后臺無法修改php文件,提示Scrape key check failed. Please try again.
通過對網(wǎng)上相關(guān)資料的研究,發(fā)現(xiàn)少數(shù)IDC廠家的虛擬主機(jī)在使用wordpress4.9以上版本wordpress的時(shí)候,有可能出現(xiàn)編輯php文件無法保存,提示Scrape key check failed. Please try again .的情況,
目前沒有很好的解決辦法,暫時(shí)找到的一種解決辦法是:
進(jìn)wordpress網(wǎng)站根目錄,找到wp-admin/includes/file.php
下載到本地,找下以下兩行代碼中間的部分:大約從522行到641行,
開頭 ? if ( $is_active && 'php' === $extension ) {
結(jié)尾?return new WP_Error( 'php_error', $message, $result );
將其刪除即可解決問題,
-
if ( $is_active && 'php' === $extension ) {$scrape_key = md5( rand() );$transient = 'scrape_key_' . $scrape_key;$scrape_nonce = strval( rand() );// It shouldn't take more than 60 seconds to make the two loopback requests.set_transient( $transient, $scrape_nonce, 60 );$cookies = wp_unslash( $_COOKIE );$scrape_params = array('wp_scrape_key' => $scrape_key,'wp_scrape_nonce' => $scrape_nonce,);$headers = array('Cache-Control' => 'no-cache',);/** This filter is documented in wp-includes/class-wp-http-streams.php */$sslverify = apply_filters( 'https_local_ssl_verify', false );// 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', 'sslverify' ) );$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 ( empty( $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 ( empty( $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 = __( 'Something went wrong.' );} else {$message = $result['message'];unset( $result['message'] );}return new WP_Error( 'php_error', $message, $result );}}
轉(zhuǎn)載請注明:?山滾網(wǎng)絡(luò)? ? WordPress 網(wǎng)站后臺無法修改php文件,提示Scrape key check failed. Please try again.

