- 상태
- 해결됨
문제 개요
일부 웹사이트의 번역 관리 대시보드 또는 번역 관리 작업 페이지에서 다음과 같은 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 파일 편집
- 서버의 php.ini 파일을 찾아 편집하세요.
- always_populate_raw_post_data 문자열이 포함된 줄을 찾으세요.
- 해당 줄이 세미콜론(;)으로 시작한다면 주석 처리되어(사용되지 않음) 있음을 의미합니다. 이 경우 세미콜론을 제거하세요.
- 전체 줄이
always_populate_raw_post_data=-1인지 확인하세요(“=-1”로 끝나야 합니다). - 서버를 다시 시작하세요.
PHP 업그레이드
PHP를 최신 버전(7.1 이상)으로 업그레이드하면 지원 중단 경고가 제거됩니다.
PHP 7.1은 PHP 5.6보다 훨씬 빠릅니다.
PHP 5.6은 2019년 1월 1일에 수명이 종료되었습니다. 이는 “더 이상 지원되지 않는 릴리스이며, 이 릴리스의 사용자는 패치되지 않은 보안 취약점에 노출될 수 있으므로 가능한 한 빨리 업그레이드해야 합니다”라는 의미입니다(출처: https://www.php.net/supported-versions.php).