HI,欢迎来到我爱模板网!

未能与站点联系来检查致命错误,因此PHP修改已被回滚。您需要采用其他方式(如SFTP)上传您修改的PHP文件

如果在WordPress后台主题编辑中修改模板php文件,点击更新文件时提示“未能与站点联系来检查致命错误,因此PHP修改已被回滚。您需要采用其他方式(如SFTP)上传您修改的PHP文件”。 这个错误提示是 WordPress 4.9 之后添加的功能,检查 WP 文件编辑器中是否有PHP错误,以防止网站因修改模板文件而...

如果在WordPress后台主题编辑中修改模板php文件,点击更新文件时提示“未能与站点联系来检查致命错误,因此PHP修改已被回滚。您需要采用其他方式(如SFTP)上传您修改的PHP文件”。

这个错误提示是 WordPress 4.9 之后添加的功能,检查 WP 文件编辑器中是否有PHP错误,以防止网站因修改模板文件而崩溃。

未能与站点联系来检查致命错误,因此PHP修改已被回滚。您需要采用其他方式(如SFTP)上传您修改的PHP文件

有人说是WP的BUG,也有人说和服务器主机环境配置有关,也有人说是主题中有不规范的代码或者是某些插件会影响编辑模板,众说不一,不管了。

如果不准备通过FTP替换修改模板文件,可以通过修改WordPress程序文件,删除这个代码检查功能。

以WP5.4为例,打开wp-admin/includes/file.php程序文件,删除505-616行的如下代码:

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 );
 		}
 	}

给TA打赏
共{{data.count}}人
人已打赏
wordpress教程

wordpress教程之 WordPress 添加类别

2023-2-16 23:45:10

wordpress教程

如何自定义WordPress媒体上传路径

2023-2-16 23:45:10

【腾讯云】11.11云上盛惠!云服务器首年1.8折起,买1年送3个月!
11.11云上盛惠!海量产品·轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。
查看更多相关信息>>
站长

(工作日 10:00 - 22:30 为您服务)

2026-01-30 12:40:11

您好,无论是售前、售后、意见建议……均可通过联系工单与我们取得联系。

猜你想问:

  • 购买的模板免费包安装吗?

  • 这个演示地址有吗?

  • 购买vip会员可以下载哪些模板?

您的留言我们已经收到,我们将会尽快跟您联系!
取消
立即选择任一渠道联系我们