الانتقال إلى المحتوى
الأخطاء والأعطال

الشاشة البيضاء في ووردبريس: شرح المشكلة وحلها

الشاشة البيضاء هي خطأ فادح في PHP لا تستطيع رؤيته. اصطدم ووردبريس بخطأ غير قابل للتعافي أثناء عرض الصفحة، فتوقف PHP، ولأن عرض الأخطاء معطّل عادت الصفحة فارغة.

نُشر

الشاشة البيضاء هي خطأ فادح في PHP لا تستطيع رؤيته. اصطدم ووردبريس بخطأ غير قابل للتعافي في منتصف عرض الصفحة، فتوقف PHP، ولأن عرض الأخطاء معطّل على الخوادم الإنتاجية عادت الصفحة فارغة بدل أن تطبع لك سبب المشكلة. والحل نادرًا ما يكون تخمينًا: فعّل سجل التصحيح، وافتح ملف wp-content/debug.log، واقرأ آخر سطر خطأ فادح. هذا السطر يسمّي الملف المسؤول بالضبط — وهو غالبًا إضافة (plugin) أو قالب (theme) — وهذا السطر وحده هو الإصلاح كاملًا.

لماذا تكون الشاشة فارغة

يملك PHP إعدادًا اسمه display_errors. على جهاز التطوير يكون مفعّلًا عادة، فيطبع الخطأ الفادح تتبّع المكدّس على الشاشة. أما على الاستضافة الحقيقية فهو معطّل افتراضيًا، لأن تسريب مسارات الملفات والأخطاء للزوّار يمثّل مشكلة أمنية. لذلك حين يُطلق شيء ما خطأً فادحًا — استدعاء دالة لم تعد موجودة، أو صنف (class) لم يُحمّل، أو خطأ في بنية الشيفرة داخل تحديث إضافة — يتوقف PHP ولا يرسل شيئًا. فيعرض متصفحك مستندًا فارغًا. هذه هي “الشاشة البيضاء”.

منذ ووردبريس 5.2 يوجد معالج للأخطاء الفادحة (WP_Fatal_Error_Handler) يحاول التقاط هذه الأخطاء. حين ينجح، لا تحصل على صفحة فارغة — بل تحصل على رسالة “كان هناك خطأ فادح في هذا الموقع”، إضافة إلى بريد إلكتروني يُرسل إلى عنوان المدير يحتوي غالبًا على الخطأ الفعلي ورابط إلى وضع الاستعادة (Recovery Mode). أما الشاشة الفارغة تمامًا فتعني عادة أن الخطأ حدث قبل أن يتمكّن هذا المعالج من العمل: خطأ في بنية الشيفرة (يُلتقط وقت التصريف)، أو إضافة must-use معطوبة، أو خطأ فادح في ملف functions.php الخاص بالقالب المفعّل. في كل الأحوال، السبب مكتوب في مكان ما. عليك فقط أن تُشغّل الكتابة.

أصلحها بالترتيب

1. فعّل السجل. عدّل ملف wp-config.php عبر SFTP وأضف هذه الأسطر فوق سطر /* That's all, stop editing! */:

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

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

2. اقرأ آخر خطأ فادح. افتح ملف wp-content/debug.log وانظر إلى أسفله:

tail -n 30 wp-content/debug.log

أنت تبحث عن سطر مثل هذا:

[14-Jul-2026 09:12:44 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function wc_get_product() in /var/www/html/wp-content/plugins/some-addon/includes/class-widget.php:88

المسار يسمّي المسؤول: plugins/some-addon. هذه هي إجابتك. إذا كان التتبّع طويلًا أو الرسالة غامضة (Allowed memory size exhausted، Cannot redeclare، أو اسم صنف لا تعرفه)، الصقها في أداة فك سجل الأخطاء — فهي تزيل الضجيج، وتخبرك أي إضافة أو قالب يشير إليه المسار، وتشرح معنى نوع الخطأ المحدد.

3. عطّل المكوّن المذكور. لا يمكنك الوصول إلى /wp-admin، لذا افعلها عبر SFTP. أعد تسمية مجلد الإضافة المسبّبة للمشكلة، مثلًا some-addonsome-addon.off. لا يستطيع ووردبريس تحميل مجلد لا يجده، فيُعطّل الإضافة ويعود الموقع للعمل. إذا أشار السجل إلى قالبك، انتقل إلى قالب افتراضي بإعادة تسمية مجلد القالب المفعّل — سيتراجع ووردبريس إلى قالب مضمّن من نوع twentytwentysomething.

4. إذا امتنع السجل عن الكتابة، فإما أن wp-content غير قابل للكتابة، أو أن الخطأ على مستوى الخادم. تحقق من سجل أخطاء PHP الخاص بالاستضافة بدلًا من ذلك:

find . -name "error_log" -newermt "-1 hour"

المعلومات نفسها، لكن في ملف مختلف. غالبًا ما تُسقط أنظمة cPanel/Apache ملف error_log في جذر الموقع أو في المجلد الذي يفشل فيه.

ما يجب ألّا تفعله

لا ترفع حدّ الذاكرة فحسب. أكثر نصيحة متكرّرة على الإنترنت هي رفع WP_MEMORY_LIMIT إلى 256M أو 512M. لكن هذا لا يحلّ الشاشة البيضاء إلا إذا كان السجل يقول فعلًا Allowed memory size of N bytes exhausted. أما إذا كان الخطأ Call to undefined function، فزيادة الذاكرة لن تفعل شيئًا — تكون قد غيّرت إعدادًا عشوائيًا والشاشة ما زالت بيضاء. اقرأ السجل أولًا، ثم ارفع الذاكرة فقط إذا كانت الذاكرة هي المشكلة المذكورة.

لا تمسح ذاكرة التخزين المؤقت وتعتبر ذلك تشخيصًا. الشاشة البيضاء هي توقّف PHP على الخادم قبل وجود أي HTML. لا يمكن لأصل مخزّن قديم أن يسبّب مستندًا فارغًا. (لكن إضافة تخزين مؤقت معطوبة يمكنها ذلك — وسيسمّيها السجل، وهذا هو بيت القصيد.)

لا تعدّل نواة ووردبريس أو تعِد تثبيتها. الخطأ الفادح نادرًا ما يكون في wp-includes أو wp-admin؛ بل في الإضافة أو القالب الذي يشير إليه السجل. إعادة تثبيت النواة بطيئة ومحفوفة بالمخاطر وتعالج عرَضًا لم تتأكّد منه.

لا تعطّل كل الإضافات ثم تعيد تفعيلها واحدة تلو الأخرى بشكل أعمى. التقسيم الثنائي (bisecting) يعمل، لكنه المسار البطيء. السجل يخبرك بالمجلد المحدد في خطوة واحدة. لا تلجأ إلى طريقة “أطفئ كل شيء” إلا حين لا يوجد أي خطأ قابل للقراءة على الإطلاق.

لا تترك display_errors مفعّلًا في الإنتاج. بمجرد عودة الموقع للعمل، احذف تعريفات التصحيح (أو أعد ضبط WP_DEBUG إلى false). الأخطاء المطبوعة للزوّار تكشف مساراتك.

ما زلت عالقًا؟

إذا سمّى السجل إضافة لكن تعطيلها لم يُزل الشاشة، فهناك خطأ فادح ثانٍ تحت الأول — أعد تفعيل السجل واقرأ آخر سطر جديد؛ الأخطاء الفادحة تتراكم. وإذا كانت الرسالة نفسها هي العائق، ألقِها في أداة فك سجل الأخطاء ودعها تترجم لك نوع الخطأ ومسار الملف. تبقى الشاشة البيضاء لغزًا فقط ما دام السجل معطّلًا.