WPML
状态
已解决

问题概述

某些网站在翻译管理仪表板或翻译管理作业页面中可能会遇到以下 JavaScript 控制台错误:

app.js?ver=5.0.4:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

此错误还会产生一系列类似如下的 PHP 警告:

PHP Warning: Cannot modify header information - headers already sent in /app/public/wp-includes/rest-api/class-wp-rest-server.php on line 1258

PHP Stack trace:

PHP 1. {main}() /app/public/index.php:0

PHP 2. require() /app/public/index.php:17

PHP 3. wp() /app/public/wp-blog-header.php:16

PHP 4. WP->main() /app/public/wp-includes/functions.php:1105

PHP 5. WP->parse_request() /app/public/wp-includes/class-wp.php:737

PHP 6. do_action_ref_array() /app/public/wp-includes/class-wp.php:387

PHP 7. WP_Hook->do_action() /app/public/wp-includes/plugin.php:531

PHP 8. WP_Hook->apply_filters() /app/public/wp-includes/class-wp-hook.php:310

PHP 9. call_user_func_array:{/app/public/wp-includes/class-wp-hook.php:286}() /app/public/wp-includes/class-wp-hook.php:286

PHP 10. rest_api_loaded() /app/public/wp-includes/class-wp-hook.php:286

PHP 11. WP_REST_Server->serve_request() /app/public/wp-includes/rest-api.php:309

PHP 12. WP_REST_Server->send_header() /app/public/wp-includes/rest-api/class-wp-rest-server.php:224

PHP 13. header() /app/public/wp-includes/rest-api/class-wp-rest-server.php:1258

此错误特定于运行 PHP 5.6 的网站,是由 PHP 在填充 $HTTP_RAW_POST_DATA 全局变量时(即使未使用该变量)触发的弃用警告引起的,正如 PHP 中此项更改的作者在此处所解释的那样

[…] 触发弃用消息的当前方式不够理想(我们不是在您尝试访问 $HTTP_RAW_POST_DATA 变量时显示该消息,而是在填充 $HTTP_RAW_POST_DATA 时显示)。

该警告说明了如何移除此弃用通知。

临时解决方法

编辑 php.ini 文件


  1. 找到并编辑服务器的 php.ini 文件。

  2. 查找包含 always_populate_raw_post_data 字符串的行。

  3. 如果该行以分号(;)开头,则表示它已被注释掉(且未被使用)。在这种情况下,请删除该分号。

  4. 检查完整行是否为 always_populate_raw_post_data=-1(它必须以“=-1”结尾)。

  5. 重新启动服务器。

升级 PHP


将 PHP 升级到较新版本(7.1 或更高版本)将消除弃用警告。

PHP 7.1 比 PHP 5.6 快得多。

PHP 5.6 已于2019年1月1日达到其生命周期终点。这意味着它是一个“不再受支持的版本。该版本的用户应尽快升级,因为他们可能会面临未修补的安全漏洞。”(来源:https://www.php.net/supported-versions.php)。

所有已知问题 →