- สถานะ
- แก้ไขแล้ว
ภาพรวมของปัญหา
บางเว็บไซต์อาจพบข้อผิดพลาดในคอนโซล 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 สิ้นสุดระยะเวลาการใช้งานเมื่อวันที่ 1 มกราคม 2019 ซึ่งหมายความว่าเป็น “เวอร์ชันที่เผยแพร่ซึ่งไม่ได้รับการสนับสนุนอีกต่อไป ผู้ใช้เวอร์ชันที่เผยแพร่นี้ควรอัปเกรดโดยเร็วที่สุด เนื่องจากอาจมีความเสี่ยงต่อช่องโหว่ด้านความปลอดภัยที่ไม่ได้รับการแก้ไข” (ที่มา: https://www.php.net/supported-versions.php)