العودة إلى المدونة

شاشة بيضاء أو "خطأ فادح" في ووردبريس: اعرف السبب وأصلحه

فريق تحرير IM Host25 أكتوبر 20267 دقائق قراءة
شاشة بيضاء أو "خطأ فادح" في ووردبريس: اعرف السبب وأصلحه

تفتح موقعك فتجد صفحة بيضاء فارغة، أو يعرض ووردبريس هذه الرسالة بدلًا من محتواك:

There has been a critical error on this website. Please check your site admin email inbox for instructions.

الحالتان مشكلة واحدة تظهر بطريقتين: واجه PHP خطأً فادحًا (Fatal Error) فتوقف قبل أن يبني الصفحة. الإصدارات القديمة من ووردبريس لا تعرض شيئًا على الإطلاق، ولهذا تُسمّى "شاشة الموت البيضاء". ومنذ ووردبريس 5.2 يلتقط معالج الأخطاء معظم الأخطاء الفادحة، فيعرض رسالة الخطأ الفادح ويرسل بريدًا إلى مدير الموقع.

يعتمد الحل على سبب الخطأ، وفي أغلب الحالات يكون إضافة أو قالبًا أو حد ذاكرة PHP أو عدم توافق مع إصدار PHP. الخطوات التالية تكشف السبب أولًا، حتى تغيّر شيئًا واحدًا بدل عشرة أشياء.

قبل أن تبدأ: خذ نسخة احتياطية

إذا كانت استضافتك تحتفظ بنسخ احتياطية تلقائية، فدوّن وقت آخر نسخة. وإذا كنت تستطيع الوصول إلى الملفات وقاعدة البيانات، فخذ نسخة جديدة قبل أي تغيير. بعض الحلول التالية تعيد تسمية مجلدات أو تستبدل ملفات، والنسخة الاحتياطية تجعل كل خطوة قابلة للتراجع.

الخطوة 1: راجع بريد وضع الاسترداد

عندما يلتقط ووردبريس خطأً فادحًا، يرسل بريدًا إلى عنوان المدير المحدد في Settings > General، وعنوانه غالبًا "Your Site is Experiencing a Technical Issue". تذكر الرسالة الإضافة أو القالب المتسبب وتتضمن رابط دخول خاصًا.

يفتح هذا الرابط وضع الاسترداد (Recovery Mode). في هذا الوضع يوقف ووردبريس الإضافة أو القالب المعطوب لجلستك فقط، فتستطيع الدخول إلى لوحة التحكم وتعطيله أو تحديثه ثم الخروج من الوضع. أما الزوار فيظلون يرون الخطأ حتى تُصلحه. وتنتهي صلاحية الرابط بعد وقت محدود، فاستخدمه سريعًا.

إذا لم تصلك الرسالة فتفقد مجلد الرسائل غير المرغوب فيها، وتأكد أن بريد المدير عنوان ما زلت تستطيع قراءته. كثير من المواقع لا ترسل البريد بشكل موثوق قبل ضبط SMTP، فلا تعتمد على هذه الرسالة. الخطوات التالية تعمل بدونها.

الخطوة 2: اقرأ الخطأ الفعلي عبر WP_DEBUG_LOG

التخمين يضيّع الوقت. فعّل سجل الأخطاء ودع PHP يخبرك بالملف الذي فشل. عدّل ملف wp-config.php في جذر الموقع وأضف هذه الأسطر فوق السطر /* That's all, stop editing! */. وإذا كان سطر WP_DEBUG موجودًا من قبل فعدّله بدل إضافة سطر ثانٍ.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

هذا يكتب الأخطاء في wp-content/debug.log ويخفيها عن الزوار. أعد تحميل الصفحة المعطوبة مرة واحدة، ثم اقرأ نهاية السجل:

# From the WordPress root folder
tail -n 50 wp-content/debug.log

إذا لم يكن لديك SSH فافتح الملف من مدير الملفات في لوحة التحكم. ابحث عن الأسطر التي تبدأ بـ PHP Fatal error أو PHP Parse error. أمثلة معتادة:

PHP Fatal error:  Uncaught Error: Call to undefined function create_function() in /home/user/public_html/wp-content/plugins/old-slider/slider.php:42

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/user/public_html/wp-includes/class-wpdb.php on line 2345

PHP Parse error:  syntax error, unexpected token "}" in /home/user/public_html/wp-content/themes/my-child/functions.php on line 88

المسار يخبرك أين تبحث: مسار داخل wp-content/plugins/ يشير إلى إضافة، ومسار داخل wp-content/themes/ يشير إلى قالب. رسالة "Allowed memory size exhausted" تشير إلى حد الذاكرة، و"Call to undefined function" في كود قديم تشير غالبًا إلى تغيير في إصدار PHP.

إذا ظل debug.log فارغًا فراجع سجل أخطاء PHP في لوحة تحكم الاستضافة، فبعض الخوادم تكتب الأخطاء الفادحة هناك.

الخطوة 3: استبعد الإضافات

الإضافات هي سبب معظم الأخطاء الفادحة، خاصة بعد التحديث مباشرة. إذا ذكر السجل إضافة بعينها فعطّلها وحدها، وإن لم يذكر فعطّلها كلها وانظر هل يعود الموقع.

دون الوصول إلى لوحة التحكم: أعد تسمية المجلد

لا يستطيع ووردبريس تحميل الإضافات من مجلد لا يجده. عبر SFTP أو SSH أو مدير الملفات:

# Disable every plugin at once by renaming the folder
mv wp-content/plugins wp-content/plugins.off

# Site works again? Restore the folder name, then disable plugins one by one
mv wp-content/plugins.off wp-content/plugins
mv wp-content/plugins/old-slider wp-content/plugins/old-slider.off

يعتبر ووردبريس الإضافة التي أُعيدت تسميتها معطّلة، وعند إعادة اسم المجلد ستحتاج إلى تفعيل الإضافات السليمة من جديد من لوحة التحكم.

باستخدام WP-CLI

يسمح الخياران --skip-plugins و--skip-themes بتشغيل WP-CLI حتى عندما تتسبب إضافة أو قالب في توقف ووردبريس عند التحميل:

# List plugins without loading them (works even when the site is broken)
wp plugin list --skip-plugins --skip-themes

# Deactivate one plugin, or all of them
wp plugin deactivate old-slider --skip-plugins --skip-themes
wp plugin deactivate --all --skip-plugins --skip-themes

# Switch to a default theme
wp theme activate twentytwentyfour --skip-plugins --skip-themes

الخطوة 4: استبعد القالب

إذا أشار السجل إلى قالبك، أو ظل الموقع معطوبًا مع تعطيل كل الإضافات، فانتقل إلى قالب افتراضي. يمكنك استخدام أمر WP-CLI السابق، أو إعادة تسمية مجلد القالب النشط، فيعود ووردبريس إلى قالب افتراضي إن كان مثبتًا. ومن الأسباب الشائعة هنا تعديل صغير في functions.php نسي فيه قوسًا أو فاصلة منقوطة، ويحدد خطأ التحليل في السجل السطر بدقة.

الخطوة 5: ارفع حد ذاكرة PHP بحذر

خطأ مثل Allowed memory size of 134217728 bytes exhausted يعني أن PHP وصل إلى حد الذاكرة، وهو هنا 128 ميجابايت. ولووردبريس إعداد خاص فوق حد PHP:

define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

أمران يجب معرفتهما. أولًا، لا يستطيع ووردبريس تجاوز قيمة memory_limit في PHP على الخادم؛ فإذا كانت الاستضافة تضبطها على 128 ميجابايت، فطلب 256 ميجابايت في wp-config.php لا يغيّر شيئًا. ارفع حد PHP من إعدادات PHP في لوحة التحكم أو اطلب ذلك من الدعم. ثانيًا، 256 ميجابايت قاعدة تقريبية معقولة لمعظم المواقع، ومنها كثير من المتاجر. وإذا احتاج الموقع إلى أكثر من ذلك بكثير في كل صفحة، فالأرجح أن إضافة ما تحمّل بيانات أكثر من اللازم، وزيادة الذاكرة تؤجل الانهيار التالي فقط.

الخطوة 6: تحقق من إصدار PHP

إصدارات PHP تحذف دوال قديمة. فمثلًا حُذفت create_function() وeach() في PHP 8.0، لذا تتعطل أي إضافة قديمة تستخدمهما لحظة انتقال الخادم إلى PHP 8. ويحدث العكس أيضًا: قد يتطلب تحديث إضافة إصدار PHP أحدث مما يعمل عليه موقعك.

  • إذا بدأ الخطأ بعد ترقية PHP مباشرة، فارجع إلى الإصدار السابق من لوحة التحكم، ثم حدّث الإضافة التي فشلت أو استبدلها.

  • إذا بدأ بعد تحديث إضافة مباشرة، فراجع الحد الأدنى من إصدار PHP الذي تتطلبه، وانتقل إلى إصدار مدعوم.

تحقق من الإصدار الذي يستخدمه الموقع فعلًا من Tools > Site Health > Info > Server، فالأمر php -v عبر SSH قد يعرض إصدارًا مختلفًا عن الإصدار الذي يخدم موقعك.

أسباب أخرى تستحق الفحص

  • "Briefly unavailable for scheduled maintenance": انقطع تحديث أثناء تنفيذه. احذف ملف .maintenance من جذر الموقع.

  • ملفات النواة تالفة: بعد تحديث فاشل أو تنظيف من برمجيات خبيثة، قارن ملفات النواة واستبدلها عبر WP-CLI.

# Check that core files match the official release
wp core verify-checksums

# Replace core files without touching wp-content
wp core download --skip-content --force
  • لوحة التحكم وحدها بيضاء: غالبًا إضافة تعمل في منطقة الإدارة فقط، أو أن لوحة التحكم تحتاج ذاكرة أكثر من الواجهة. سجل الأخطاء يوضح أيهما.

  • الخطأ يظهر للمستخدمين المسجلين فقط: امسح ذاكرة إضافة التخزين المؤقت وذاكرة أي CDN، فقد يرى الزوار نسخة قديمة مخزنة بينما الموقع الحقيقي معطوب.

بعد الإصلاح: أوقف وضع التصحيح

أعد WP_DEBUG إلى false واحذف ملف debug.log أو أفرغه، فقد يحتوي على مسارات ملفات وتفاصيل لا تريدها علنية، كما أنه يكبر بسرعة في المواقع النشطة. ثم أعد تفعيل الإضافات واحدة تلو الأخرى، وحدّث الإضافة التي فشلت أو استبدلها، واختبر أهم الصفحات: الرئيسية، ومقال، ونموذج التواصل، وصفحة الدفع.

شغّل ووردبريس على IM HOST

تعمل استضافة ووردبريس من IM HOST على تخزين NVMe مع LiteSpeed Cache ونسخ احتياطية يومية مجانية طوال مدة الاشتراك، فتستطيع الرجوع إلى نسخة سابقة إذا أفسد تحديثٌ الموقع. ويستطيع مهندسونا المتاحون على مدار الساعة قراءة سجلات الأخطاء معك، وتغيير إصدار PHP، ومساعدتك في تحديد الإضافة المتسببة. وإذا كان موقعك لدى مزوّد آخر، فخدمة النقل المجاني تنقل الملفات وقواعد البيانات والبريد دون توقف.

المزيد من مدونتنا

اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.

عرض كل المقالات