المدوّنة · ووردبريس

«500 Internal Server Error» في ووردبريس: كيف تجد السبب

· 7 دقائق قراءة

«500 Internal Server Error» في ووردبريس: كيف تجد السبب

رسالة «500 Internal Server Error» (خطأ الخادم الداخلي) هي واحدة من أكثر رسائل الخطأ إحباطاً وغموضاً لأصحاب مواقع ووردبريس؛ لأنها رسالة حماية عامة ومبهمة لا تشرح لك ما الذي حدث تحديداً خلف الكواليس، بل تخبرك فقط أن الخادم واجه ظرفاً طارئاً وحرجاً منعه من إكمال معالجة الصفحة وإرجاع محتواها للمتصفح.

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

ماذا يعني كود 500 من الناحية الهندسية؟#

في معيار بروتوكول HTTP، يمثل كود 500 تصنيفاً شاملاً لأي فشل يحدث داخل بيئة الخادم بعد استقبال الطلب بنجاح. ينقسم الخطأ عادة إلى مستويين رئيسيين:

  • أخطاء على مستوى خادم الويب (Web Server Level): تحدث عندما يقرأ خادم Apache أو LiteSpeed أمراً غير مدعوم في ملف .htaccess (مثل كتابة توجيه خاص بموديل غير مفعل في السيرفر)، فيتوقف الخادم فوراً قبل استدعاء لغة PHP من الأساس.
  • أخطاء على مستوى تطبيق PHP (Application Level): تحدث عندما يبدأ ووردبريس في العمل بالفعل، لكنه يصطدم بخطأ برمجي قاتل (Fatal Error أو Parse Error)، أو استثناء غير معالج (Uncaught Exception)، فيتوقف السكربت عن العمل ويعيد كود 500 لحماية مسارات النظام من الظهور للعامة.

الخطوة الأولى: كشف الخطأ الحقيقي بتفعيل وضع الفحص (WP_DEBUG)#

افتراضياً، يخفي ووردبريس تفاصيل الأخطاء عن الزوار لأسباب أمنية بالغة الأهمية؛ حتى لا يرى المتطفلون مسارات الملفات وأسماء الجداول وقواعد البيانات. لكشف الخطأ الدقيق والمخفي:

  1. ادخل إلى ملفات موقعك عبر مدير الملفات (File Manager) في لوحة الاستضافة أو عبر اتصال SFTP.
  2. افتح المجلد الرئيسي لموقعك (المسمى عادة public_html).
  3. ابحث عن ملف wp-config.php وافتحه للتحرير في المحرر النصي.
  4. ابحث عن سطر define('WP_DEBUG', false);، واستبدله بالأسطر الثلاثة التالية:
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
  5. بهذا الإعداد الاحترافي، لن تظهر أي شاشات تشوه موقعك أمام الزوار، ولكن ووردبريس سيسجل كل خطأ برمجي بالتفصيل في ملف سري يُحفظ داخل مجلد المحتوى بالمسار التالي: wp-content/debug.log.
  6. أعد تحديث الصفحة في متصفحك مرة واحدة، ثم افتح ملف debug.log واقرأ السطور الأخيرة في أسفل الملف. ستجد نصاً دقيقاً يشبه:
    PHP Fatal error: Uncaught Error: Call to undefined function get_header() in /wp-content/plugins/custom-plugin/core.php:42
    هذا السطر يحدد لك بدقة متناهية: اسم الإضافة المسؤولة، والملف البرمجي، ورقم السطر المتسبب في انهيار الموقع كاملاً.

الخطوة الثانية: إصلاح ملف .htaccess المعطوب#

أكثر أسباب خطأ 500 شيوعاً في استضافات Apache وLiteSpeed هو وجود أمر خاطئ أو تعارض قواعد إعادة التوجيه داخل ملف .htaccess، وغالباً ما يحدث ذلك بعد تثبيت إضافات التخزين المؤقت (الكاش)، أو إضافات الأمان، أو تعديل إعدادات الروابط الدائمة:

  1. في المجلد الرئيسي لموقعك (تأكد من تفعيل خيار إظهار الملفات المخفية Show Hidden Files في مدير الملفات).
  2. أعد تسمية ملف .htaccess ليصبح مثلاً: .htaccess_backup.
  3. افتح موقعك في المتصفح في نافذة تصفح خفي جديدة؛ إذا عاد الموقع للعمل واختفى خطأ 500، فقد تأكدت يقيناً أن المشكلة كانت في الأوامر المكتوبة داخل ذلك الملف.
  4. لإنشاء ملف نظيف ومعياري، ادخل إلى لوحة تحكم ووردبريس، وتوجه إلى إعدادات > الروابط الدائمة (Permalinks)، واضغط على زر حفظ التغييرات دون تعديل أي شيء، وسيقوم ووردبريس بتوليد ملف .htaccess سليم ومتوافق تلقائياً.

إذا كنت غير قادر على دخول لوحة التحكم، أنشئ ملفاً جديداً باسم .htaccess وضع بداخله الكود الافتراضي السليم لووردبريس:

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

الخطوة الثالثة: تعطيل الإضافات المتعارضة دفعة واحدة#

إذا كشف لك ملف السجلات أن المشكلة ناتجة عن إضافة معطوبة، أو لم تستطع قراءة السجل لأي سبب، فعطّل مجلد الإضافات لاختبار العزل السريع:

  1. من مدير الملفات، توجه إلى المسار: wp-content/.
  2. ابحث عن مجلد plugins وأعد تسميته مؤقتاً إلى plugins_old. هذا الإجراء الفوري يلغي تفعيل كافة الإضافات في خطوة واحدة دون مساس بقاعدة البيانات أو حذف أي إعدادات مخزنة.
  3. افتح موقعك مجدداً؛ إذا اختفى الخطأ، فإن المشكلة تكمن في إحدى الإضافات بالتأكيد.
  4. أعد تسمية المجلد إلى اسمه الأصلي plugins، ثم ادخل إلى داخله وأعد تسمية مجلدات الإضافات واحدة تلو الأخرى لاكتشاف الإضافة المنهارة بمفردها ثم حذفها أو استبدالها بنسخة مستقرة.

الخطوة الرابعة: رفع حد ذاكرة PHP (Allowed Memory Size Exhausted)#

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

لرفع حد الذاكرة الممنوحة لووردبريس، أضف السطر التالي في ملف wp-config.php قبل سطر That's all, stop editing!:

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

الخطوة الخامسة: فحص تلف ملفات نواة ووردبريس (Corrupt Core Files)#

في حالات نادرة، قد تنقطع عملية التحديث التلقائي لنواة ووردبريس في منتصفها، مما يترك ملفات نظام تالفة أو ناقصة داخل مجلدات wp-includes و wp-admin تتسبب في خطأ 500 دائم. إذا كان لديك وصول SSH، يمكنك فحص وإعادة تثبيت ملفات النواة الرسمية النظيفة دون لمس المحتوى عبر أداة WP-CLI:

# فحص البصمة الرقمية لملفات ووردبريس لاكتشاف الملفات المعدلة أو التالفة
wp core verify-checksums

# إعادة تحميل وتثبيت ملفات النواة النظيفة بالقوة دون المساس بمجلد wp-content
wp core download --skip-content --force

الخطوة السادسة: تصحيح صلاحيات الملفات والمجلدات#

في العديد من خوادم الاستضافة التي تعتمد على معالجات مثل FastCGI أو suPHP، تؤدي الصلاحيات المتساهلة جداً (مثل إعطاء صلاحية 777 لأي ملف أو مجلد) إلى حظر الخادم لتنفيذ السكربت كإجراء حماية وقائي تلقائي، مما ينتج عنه خطأ 500 فوري:

  • تأكد أن كافة المجلدات تأخذ الصلاحية القياسية 755.
  • تأكد أن كافة الملفات تأخذ الصلاحية القياسية 644.
  • تأكد من أن ملف wp-config.php يحمل الصلاحية الأكثر أماناً 600 أو 640 لمنع قراءته من قبل أي مستخدم آخر على الخادم.

جدول مقارنة: أخطاء فئة 5xx في الخوادم والمواقع#

كود الخطأ المعنى الرسمي السبب الهندسي الأكثر شيوعاً طريقة العلاج الأساسية
500 Internal Server Error خطأ في .htaccess أو كود PHP قاتل تفعيل WP_DEBUG وإصلاح ملف htaccess
502 Bad Gateway الخادم الخلفي (PHP-FPM) متوقف أو منهار إعادة تشغيل خدمة معالج PHP والتأكد من المقبس
503 Service Unavailable تجاوز حدود الموارد أو صيانة مجدولة زيادة عمال PHP وفحص حدود خطة الاستضافة
504 Gateway Timeout الخادم الخلفي استغرق وقتاً أطول من المهلة رفع مهلات fastcgi_read_timeout وتحسين الاستعلامات

كيف تتأكد أن الموقع تعافى تماماً؟#

بعد تطبيق الحل، اختبر الاستجابة الحقيقية للخادم عبر الطرفية باستخدام أمر curl للتأكد من أن الخادم يعيد كود النجاح HTTP/2 200 OK أو HTTP/1.1 200 OK وليس كود خطأ مستتر:

curl -I https://example.com

خطوة ختامية هامة: بعد حل المشكلة وعودة الموقع للعمل بكفاءة، ارجع فوراً إلى ملف wp-config.php وأعد قيمة WP_DEBUG إلى false؛ حتى لا يستمر الخادم في تسجيل ملفات ضخمة تستهلك مساحة القرص أو تكشف معلومات النظام الحساسة في حال حدوث أي تحذيرات بسيطة.

المصادر#

التعليقات

كن أول من يشارك رأيه أو تجربته.

أضف تعليقاً أو سؤالاً

سجّل الدخول لتعجب بالتعليقات المفيدة وترفعها لأعلى النقاش. سجّل الدخول

لا يُنشر، ولا نرسل إليه شيئاً.

يظهر التعليق بعد مراجعته. الروابط لا تُفعَّل.

تبني موقعاً عربياً؟

سكربتات وقوالب وإضافات وخوادم — مصمّمة للمواقع العربية.

تصفّح المنتجات