WPML
Statut
Résolu

Aperçu de l’anomalie

Certains sites peuvent rencontrer l’erreur de console JavaScript suivante sur les pages Tableau de bord ou Travaux de traduction de la Gestion de traduction :

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

Cette erreur produira également une série d’avertissements PHP tels que les suivants :

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

L’erreur est spécifique aux sites fonctionnant sous PHP 5.6 et est causée par un avertissement d’obsolescence déclenché par PHP lorsque la variable globale $HTTP_RAW_POST_DATA est renseignée (même si elle n’est pas utilisée), comme l’explique ici l’auteur de cette modification dans PHP :

[…] la méthode actuelle pour déclencher le message d’obsolescence est un peu sous-optimale (nous ne vous affichons pas le message lorsque vous essayez d’accéder à la variable $HTTP_RAW_POST_DATA, mais lorsque $HTTP_RAW_POST_DATA est renseignée.

L’avertissement explique comment supprimer la notification d’obsolescence.

Solution de contournement

Modification du fichier php.ini


  1. Trouvez et modifiez le fichier php.ini de votre serveur.

  2. Recherchez une ligne contenant la chaîne de texte always_populate_raw_post_data.

  3. Si la ligne commence par un point-virgule (;), cela signifie qu’elle est commentée (et n’est pas utilisée). Dans ce cas, supprimez le point-virgule.

  4. Vérifiez que la ligne complète est always_populate_raw_post_data=-1 (elle doit se terminer par « =-1 »).

  5. Redémarrez votre serveur.

Mise à jour de PHP


La mise à jour de PHP vers une version plus récente (7.1 ou supérieure) supprimera l’avertissement d’obsolescence.

PHP 7.1 est beaucoup plus rapide que PHP 5.6.

PHP 5.6 a atteint sa fin de vie le 1er janvier 2019. Cela signifie qu’il s’agit d’une « version publiée qui n’est plus prise en charge. Les utilisateurs de cette version publiée doivent effectuer une mise à jour dès que possible, car ils peuvent être exposés à des failles de sécurité non corrigées. » (source : https://www.php.net/supported-versions.php).

Toutes les anomalies connues →