«There has been a critical error on this website»: رسالة ووردبريس وحلّها

بداية من إطلاق إصدار ووردبريس 5.2، قرر الفريق المطور لنواة النظام وضع حد لشاشة الموت البيضاء الصامتة والغامضة التي كانت تترك أصحاب المواقع في حيرة مطبقة؛ فاستحدثوا منظومة حماية هندسية متقدمة تُعرف رسمياً بـ معالج الأخطاء الفادحة (Fatal Error Protection & Handler). عند وقوع انهيار برمجي في السكربت، لم يعد الموقع يتوقف بصمت أو يعرض شاشة فارغة، بل يعرض رسالة مهذبة وموحدة لكافة الزوار تنص على: «There has been a critical error on this website. Please check your site admin email inbox for instructions» (أو بالنسخة العربية الرسمية: «حدث خطأ حرج في هذا الموقع الإلكتروني. يُرجى التحقق من صندوق البريد الوارد لمدير الموقع للحصول على التعليمات»).
هذه الرسالة في جوهرها ميزة أمنية بالغة القوة وليست مؤشراً على كارثة؛ فهي تعني أن ووردبريس اعترض الخطأ القاتل بنجاح وعزله قبل أن يتسبب في إظهار مسارات الخادم الداخلية وقواعد البيانات للعامة، وأرسل لك تلقائياً تقريراً فنياً دقيقاً ورابط دخول سرياً لإنقاذ الموقف.
كيف يعمل نظام حماية الأخطاء الفادحة برمجياً؟#
تسجل نواة ووردبريس دالة إغلاق مخصصة عبر كود لغة PHP المسمى register_shutdown_function() بواسطة الكلاس البرمجي WP_Fatal_Error_Handler. عندما يكتمل تنفيذ الطلب أو يتوقف فجأة، يفحص هذا الكلاس مخرجات دالة error_get_last():
- إذا رصدت النواة خطأ من الأنواع القاتلة (مثل خطأ بناء جملة
E_PARSE، أو خطأ استدعاء كائن غير موجودE_ERROR، أو خطأ في الذاكرة والترجمةE_COMPILE_ERROR)، يتدخل المعالج فوراً. - يقوم المعالج بإلغاء مخرجات الصفحة التالفة، ويكتب رسالة الخطأ الحرج الموحدة في ترويسة المتصفح بكود
500. - يولد النظام مفتاح تشفير أمني عشوائي صالحاً لأربع وعشرين ساعة فقط، ويحفظه في قاعدة البيانات، ثم يرسل رسالة بريد إلكتروني عاجلة لعنوان مدير الموقع المسجل تتضمن تفاصيل المشكلة ورابط وضع الاسترداد المخصص.
المسار الأول: الإصلاح الفوري عبر بريد وضع الاسترداد (Recovery Mode)#
إذا كان خادمك قادراً على إرسال رسائل البريد الإلكتروني، فهذا المسار هو الأسهل والأسرع:
- افتح بريدك الإلكتروني الإداري (وتأكد دائماً من فحص مجلد الرسائل غير المرغوب فيها أو الـ Junk).
- ابحث عن رسالة واردة بعنوان: «الموقع يواجه مشكلة تقنية» أو «Your Site is Experiencing a Technical Issue».
- ستجد بداخل نص الرسالة تفاصيل فنية دقيقة لا تقدر بثمن:
- اسم الإضافة أو القالب المتسبب: يذكر ووردبريس صراحة اسم المكون البرمجي المنهار.
- مسار الملف البرمجي ورقم السطر: مثل
wp-content/plugins/woocommerce-custom/plugin.php on line 78. - تتبع المكدس البرمجي (Stack Trace): يوضح التسلسل الكامل للدوال البرمجية التي أدت لانهيار الصفحة.
- رابط وضع الاسترداد الخاص (Recovery Mode URL): رابط فريد ينتهي بمعلمة سرية مثل
action=enter_recovery_mode&rm_token=....
- انقر على رابط وضع الاسترداد؛ سينقلك المتصفح إلى شاشة تسجيل دخول ووردبريس المعتادة. سجل دخولك بحساب المدير.
- ستفتح لك لوحة التحكم مع شريط علوي بلون مميز يعلن: «أنت حالياً في وضع الاسترداد». في هذا الوضع، يقوم ووردبريس مؤقتاً بتجميد الإضافة المعطوبة لجلسة تصفحك وحدك، مما يتيح لك التجول في اللوحة بحرية كاملة دون أي انهيار.
- انتقل إلى إضافات > إضافات منصبة، وستجد الإضافة المعطوبة معزولة وبجوارها تنبيه واضح، فانقر ببساطة على زر «تعطيل» (Deactivate).
- انقر على زر «الخروج من وضع الاسترداد» في الشريط العلوي، وسيعود موقعك للعمل فوراً لجميع الزوار!
المسار الثاني: الإصلاح اليدوي (إذا لم تصلك رسالة البريد)#
في كثير من الاستضافات، قد تفشل رسالة الاسترداد في الوصول بسبب حظر دالة mail() الافتراضية في السيرفر أو غياب إعدادات SMTP وخوادم التوجيه الموثوقة. لا تقلق؛ يمكنك تشخيص العطل وحله يدوياً في دقائق:
1. إظهار الخطأ وتحديد الإضافة المعطوبة (WP_DEBUG)#
افتح ملف wp-config.php في المجلد الرئيسي لموقعك عبر مدير الملفات في لوحة الاستضافة، وأضف الأسطر التالية لحفظ السجلات:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
أعد تحديث صفحة الخطأ في المتصفح مرة واحدة، ثم افتح الملف wp-content/debug.log واقرأ السطر الأخير لمعرفة الإضافة ورقم السطر المتسبب.
2. تعطيل الإضافة المعطوبة يدوياً عبر مدير الملفات#
إذا عرفت من السجل أن الإضافة المسببة للخطأ هي مثلاً elementor-pro:
- توجه إلى مجلد
wp-content/plugins/. - ابحث عن مجلد الإضافة وأعد تسميته بإضافة
_disabledإلى نهايته. - سيتعطل تأثير الإضافة فوراً وسيعود الموقع للعمل بنجاح تام.
3. تعيين بريد طوارئ مخصص في ملف wp-config.php#
إذا كنت تريد ضمان وصول رسائل الاسترداد لمستقبل الأيام إلى بريدك الشخصي بدلاً من بريد المدير العام المسجل في قاعدة البيانات، يمكنك إضافة هذا الثابت في ملف wp-config.php:
define( 'RECOVERY_MODE_EMAIL', 'your-personal-email@example.com' );
4. فحص تعارض إصدارات PHP#
ترقية خادم الاستضافة إلى إصدارات حديثة مثل PHP 8.2 أو PHP 8.3 قد تتسبب في ظهور الخطأ الحرج فوراً إذا كان موقعك يستخدم قوالب أو إضافات مهجورة لم تُحدّث منذ سنوات وتستخدم دوال قديمة أُلغيت من لغة PHP. يمكنك تجربة خفض إصدار PHP مؤقتاً عبر ميزة MultiPHP Manager في لوحة التحكم لمعرفة ما إذا كان الموقع سيتعافى.
مقارنة بين مسار البريد الآلي والحل اليدوي#
| وجه المقارنة | وضع الاسترداد بالبريد (Recovery Mode) | التدخل اليدوي (File Manager / SSH) |
|---|---|---|
| سهولة الاستخدام | نقرة واحدة ودخول للوحة التحكم دون التعامل مع ملفات السيرفر | يتطلب الدخول إلى مدير ملفات الاستضافة والتعديل المباشر |
| الاعتمادية | تعتمد على كفاءة إرسال البريد من السيرفر (قد يفشل الإرسال) | مضمونة تماماً في كافة الظروف والأوقات وبلا استثناء |
| كشف سبب المشكلة | مكتوب بلغة واضحة ومباشرة داخل نص الرسالة الواردة | يتم قراءته من ملف debug.log أو سجلات الأخطاء |
| الوقت المستغرق | أقل من دقيقتين بمجرد وصول الرسالة لصندوق الوارد | من ثلاث إلى خمس دقائق عبر مدير الملفات |
كيف تتأكد أن الخطوة نجحت تماماً؟#
- افتح الموقع في نافذة تصفح خاصة (Incognito Window) للتأكد من اختفاء رسالة الخطأ وظهور التصميم الكامل للزوار غير المسجلين.
- ادخل إلى لوحة التحكم وتحقق من قسم أدوات > صحة الموقع (Site Health)، وتأكد من عدم وجود تنبيهات تفيد بوجود أخطاء برمجية حرجة معلقة.
- قم بتحديث الإضافة المسببة للمشكلة إلى آخر إصدار رسمي مستقر متوافق مع إصدار ووردبريس قبل إعادة تفعيلها.
المشاكل الشائعة وحلولها#
- رابط وضع الاسترداد في البريد منتهي الصلاحية (The link has expired)
- مفتاح الأمان في رابط الاسترداد يظل صالحاً لمدة أربع وعشرين ساعة فقط. إذا انتهت صلاحيته، أعد تحديث صفحة الخطأ في الموقع لتوليد خطأ جديد وسيرسل لك ووردبريس رسالة بريد جديدة برابط صالح فوراً، أو استخدم الحل اليدوي عبر مدير الملفات.
- تكرار الخطأ الحرج عند النقر على تحديث المقالات فقط
- غالباً ما يرجع ذلك إلى إضافة سيو أو إضافة بناء صفحات تتضارب مع محرر المكونات (Gutenberg) أو استهلاك الذاكرة عند الحفظ. ارفع حد ذاكرة PHP إلى
256Mعبر ملفwp-config.php.



التعليقات