- 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
- Trouvez et modifiez le fichier php.ini de votre serveur.
- Recherchez une ligne contenant la chaîne de texte always_populate_raw_post_data.
- 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.
- Vérifiez que la ligne complète est
always_populate_raw_post_data=-1(elle doit se terminer par « =-1 »). - 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).