山滚云

WordPress 网站后台无法修改php文件,提示Scrape key check failed. Please try again.

建站知识 237℃

WordPress 网站后台无法修改php文件,提示Scrape key check failed. Please try again.

通过对网上相关资料的研究,发现少数IDC厂家的虚拟主机在使用wordpress4.9以上版本wordpress的时候,有可能出现编辑php文件无法保存,提示Scrape key check failed. Please try again .的情况,

 

目前没有很好的解决办法,暂时找到的一种解决办法是:

进wordpress网站根目录,找到wp-admin/includes/file.php

下载到本地,找下以下两行代码中间的部分:大约从522行到641行,

开头   if ( $is_active && 'php' === $extension ) {

结尾 return new WP_Error( 'php_error', $message, $result );

 

将其删除即可解决问题,

    1. if ( $is_active && 'php' === $extension ) {
    2. $scrape_key = md5( rand() );
    3. $transient = 'scrape_key_' . $scrape_key;
    4. $scrape_nonce = strval( rand() );
    5. // It shouldn't take more than 60 seconds to make the two loopback requests.
    6. set_transient( $transient, $scrape_nonce, 60 );
    7. $cookies = wp_unslash( $_COOKIE );
    8. $scrape_params = array(
    9. 'wp_scrape_key' => $scrape_key,
    10. 'wp_scrape_nonce' => $scrape_nonce,
    11. );
    12. $headers = array(
    13. 'Cache-Control' => 'no-cache',
    14. );
    15. /** This filter is documented in wp-includes/class-wp-http-streams.php */
    16. $sslverify = apply_filters( 'https_local_ssl_verify', false );
    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(
    20. $_SERVER['PHP_AUTH_USER'] ) . ':' . wp_unslash( $_SERVER['PHP_AUTH_PW'] ) );
    21. }
    22. // Make sure PHP process doesn't die before loopback requests complete.
    23. set_time_limit( 300 );
    24. // Time to wait for loopback requests to finish.
    25. $timeout = 100;
    26. $needle_start = "###### wp_scraping_result_start:$scrape_key ######";
    27. $needle_end = "###### wp_scraping_result_end:$scrape_key ######";
    28. // Attempt loopback request to editor to see if user just whitescreened themselves.
    29. if ( $plugin ) {
    30. $url = add_query_arg( compact( 'plugin', 'file' ), admin_url( 'plugin-editor.php' ) );
    31. } elseif ( isset( $stylesheet ) ) {
    32. $url = add_query_arg(
    33. array(
    34. 'theme' => $stylesheet,
    35. 'file' => $file,
    36. ),
    37. admin_url( 'theme-editor.php' )
    38. );
    39. } else {
    40. $url = admin_url();
    41. }
    42. $url = add_query_arg( $scrape_params, $url );
    43. $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout', 'sslverify' ) );
    44. $body = wp_remote_retrieve_body( $r );
    45. $scrape_result_position = strpos( $body, $needle_start );
    46. $loopback_request_failure = array(
    47. 'code' => 'loopback_request_failed',
    48. '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.' ),
    49. );
    50. $json_parse_failure = array(
    51. 'code' => 'json_parse_error',
    52. );
    53. $result = null;
    54. if ( false === $scrape_result_position ) {
    55. $result = $loopback_request_failure;
    56. } else {
    57. $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
    58. $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
    59. $result = json_decode( trim( $error_output ), true );
    60. if ( empty( $result ) ) {
    61. $result = $json_parse_failure;
    62. }
    63. }
    64. // Try making request to homepage as well to see if visitors have been whitescreened.
    65. if ( true === $result ) {
    66. $url = home_url( '/' );
    67. $url = add_query_arg( $scrape_params, $url );
    68. $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );
    69. $body = wp_remote_retrieve_body( $r );
    70. $scrape_result_position = strpos( $body, $needle_start );
    71. if ( false === $scrape_result_position ) {
    72. $result = $loopback_request_failure;
    73. } else {
    74. $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
    75. $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
    76. $result = json_decode( trim( $error_output ), true );
    77. if ( empty( $result ) ) {
    78. $result = $json_parse_failure;
    79. }
    80. }
    81. }
    82. delete_transient( $transient );
    83. if ( true !== $result ) {
    84. // Roll-back file change.
    85. file_put_contents( $real_file, $previous_content );
    86. if ( function_exists( 'opcache_invalidate' ) ) {
    87. opcache_invalidate( $real_file, true );
    88. }
    89. if ( ! isset( $result['message'] ) ) {
    90. $message = __( 'Something went wrong.' );
    91. } else {
    92. $message = $result['message'];
    93. unset( $result['message'] );
    94. }
    95. return new WP_Error( 'php_error', $message, $result );
    96. }
    97. }

转载请注明:⎛蜗牛建站⎞ » WordPress 网站后台无法修改php文件,提示Scrape key check failed. Please try again.

山滚网络是国内领先的搜索营销服务商,有丰富的客户服务经验,我们有专业的网站优化、网站建设、APP开发、全网营销团队,可以持续为您提供优质的服务,您的满意是我们不懈的追求。

城市分站:网站建设北京网站建设上海网站建设广州网站建设深圳网站建设成都网站建设重庆网站建设武汉网站建设

业务范围:网站建设,app开发,网站优化,虚拟主机    微信:ganshangwoniu    QQ:549233124    业务咨询热线:177-2050-9380

   Copyright © 2008-2024 山滚网络版权所有   

QQ在线咨询
网站开发公司微信号