- الحالة
- محلولة
نظرة عامة على المشكلة
قد تواجه بعض المواقع الخطأ التالي في وحدة تحكم 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).