如果在WordPress后台主题编辑中修改模板php文件,点击更新文件时提示“未能与站点联系来检查致命错误,因此PHP修改已被回滚。您需要采用其他方式(如SFTP)上传您修改的PHP文件”。
这个错误提示是 WordPress 4.9 之后添加的功能,检查 WP 文件编辑器中是否有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 );
}
}
© 版权声明
1. 资源都是经过站长或作者收集测试修改后发布分享。如若转载请在文内以超链形式注明狐狸库文章出处,谢谢合作!
2. 本站除原创内容,其余所有内容均收集自互联网,仅限用于学习和研究目的,本站不对其内容的合法性承担任何责任。如有版权内容,请通知我们或作者删除,其版权均归原作者所有,本站虽力求保存原有版权信息,但因众多资源经多次转载,已无法确定其真实来源,或已将原有信息丢失,所以敬请原作者谅解!
3. 本站用户所发布的一切资源内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责,若您对本站所载资源作品版权归属存有异议,请留言附说明联系邮箱,我们将在第一时间予以处理 ,同时向您表示歉意!为尊重作者版权,请购买原版作品,支持您喜欢的作者,谢谢!
4. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客如有发现请立即向站长举报;本站资源文件大多存储在云盘,如发现链接或图片失效,请联系作者或站长及时更新。
THE END
请登录后查看评论内容