WPML
Status
Resolvido

Visão geral do problema

Alguns sites podem apresentar o seguinte erro no console JavaScript nas páginas Painel de tradução ou Trabalhos de tradução do Gerenciamento de tradução:

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

Esse erro também produzirá uma série de avisos do PHP como os seguintes:

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

O erro é específico para sites que executam o PHP 5.6 e é causado por um aviso de descontinuação acionado pelo PHP quando a variável global $HTTP_RAW_POST_DATA é preenchida (mesmo se não for usada), conforme explicado aqui pelo autor dessa alteração no PHP:

[…] a maneira atual de acionar a mensagem de descontinuação é um pouco abaixo do ideal (não mostramos a mensagem quando você tenta acessar a variável $HTTP_RAW_POST_DATA, mas sim quando $HTTP_RAW_POST_DATA é preenchida.

O aviso explica como remover a notificação de descontinuação.

Solução alternativa

Editar o arquivo php.ini


  1. Encontre e edite o arquivo php.ini do seu servidor.

  2. Procure uma linha que contenha a string always_populate_raw_post_data.

  3. Se a linha começar com um ponto e vírgula (;), isso significa que ela está comentada (e não está sendo usada). Neste caso, remova o ponto e vírgula.

  4. Verifique se a linha completa é always_populate_raw_post_data=-1 (ela deve terminar com “=-1”).

  5. Reinicie o seu servidor.

Upgrade do PHP


Fazer o upgrade do PHP para uma versão mais recente (7.1 ou superior) removerá o aviso de descontinuação.

O PHP 7.1 é muito mais rápido que o PHP 5.6.

O PHP 5.6 chegou ao fim de sua vida útil em 1º de janeiro de 2019. Isso significa que é uma “versão que não tem mais suporte. Os usuários desta versão devem fazer o upgrade o mais rápido possível, pois podem estar expostos a vulnerabilidades de segurança não corrigidas.” (fonte: https://www.php.net/supported-versions.php).

Todos os problemas conhecidos →