إذا سبق لك أن رأيت رسالة "خطأ داخلي في الخادم 500" مباشرةً بعد تفعيل إضافة أو تعديل جزء من التعليمات البرمجية، فربما كان رد فعلك صحيحًا: تحديث الصفحة... ثم الذعر عندما بقي كل شيء معطلاً. خطأ 500 محبط لأنه لا يُخبرك بأي شيء. لماذا لقد انكسر. الخبر السار: WordPress مع الإصدار 6.9.4 (أبريل 2026) و PHP 8.1+، من الممكن دائمًا تقريبًا تتبع السبب إلى السبب في أقل من 30 دقيقة باستخدام طريقة نظيفة.

المشكلة

يعرض المتصفح خطأً الخادم عام. اعتمادًا على مزود خدمة الاستضافة، سترى إحدى هذه الرسائل.

500 Internal Server Error

أو أحياناً:

HTTP ERROR 500

أو في بعض تكوينات Nginx/Cloudflare:

The server returned a "500 Internal Server Error".

قد يحدث ذلك:

  • في الواجهة الأمامية (الصفحة الرئيسية، المقالات، صفحات Elementor/Divi/Avada).
  • في لوحة التحكم (لا يمكن الوصول إلى لوحة تحكم ووردبريس، شاشة بيضاء بعد تسجيل الدخول).
  • على نقاط نهاية AJAX/REST (محرر الكتل، حفظ المقالات، مكتبة الوسائط، واجهة برمجة تطبيقات REST).
  • على ووردبريس-كرون (المهام المخطط لها التي تفشل بصمت، ورسائل البريد الإلكتروني التي لم يتم إرسالها).

الظروف النموذجية التي أواجهها في أغلب الأحيان:

  • مباشرة بعد تحديث (ووردبريس، إضافة، قالب).
  • بعد لصق قصاصة تم العثور عليه في برنامج تعليمي قديم (غالباً ما يكون غير متوافق مع PHP 8.1+).
  • بعد تغيير إصدار PHP في لجنة الإقامة.
  • بعد تفعيل إضافة التخزين المؤقت/الأمان التي تقوم بتعديل الخادم (ملف .htaccess، قواعد Nginx، جدار حماية تطبيقات الويب).

في النهاية، ستعرف:

  • الحصول على الخطأ الدقيق (بدلاً من "500" فقط).
  • اعزل بسرعة إذا كان السبب ناتجًا عن المساعد، ومن موضوع أو الخادم.
  • إصلاح الحالات المتكررة (خطأ PHP فادح، ملف .htaccess تالف، أذونات، ذاكرة، PHP-FPM).
  • أعد موقعك الإلكتروني إلى الإنترنت دون اللجوء إلى حلول منزلية خطيرة.

ملخص سريع

  • - 500 هو دائمًا تقريبًا خطأ فادح في PHP أو مشكلة في الخادم (القواعد، الأذونات، حد الذاكرة، PHP-FPM).
  • ابدأ تفعيل السجلات (WP_DEBUG + debug.log) و/أو راجع سجلات الخادم.
  • إذا لم يعد لديك صلاحية الوصول إلى لوحة تحكم ووردبريس (wp-admin): قم بتعطيل الإضافات عن طريق إعادة التسمية wp-content/plugins.
  • اختبر باستخدام السمة الافتراضية (أو التحويل المؤقت عبر قاعدة البيانات إذا لزم الأمر).
  • إصلاح الكلاسيكيات: . هتكس, أذونات, ذاكرة PHP, إصدار PHP, مخبأ.
  • بمجرد عودة الموقع للعمل، قم بالتثبيت الصحة تحقق et مراقبة الاستعلام للتأكد من السبب.

الأعراض

نادراً ما يحدث خطأ 500 بشكل منفرد. إليك ما قد تلاحظه.

  • خطأ 500 في جميع الصفحات (الواجهة الأمامية + لوحة التحكم): غالبًا ما يكون السبب هو ملف .htaccess، أو مشكلة في الأذونات، أو PHP-FPM، أو خطأ فادح منذ بداية عملية التمهيد.
  • خطأ 500 فقط في لوحة تحكم ووردبريس : إضافة إدارة، قالب يقوم بتحميل الكود على جانب الإدارة، ذاكرة غير كافية، جدار حماية تطبيقات الويب (WAF).
  • شاشة الموت البيضاء لا توجد رسالة: خطأ فادح مع تعطيل عرض الأخطاء.
  • لم يعد المحرر يحفظ الملفات استدعاءات REST التي تُرجع رمز 500، تم حظرها بسبب إجراءات الأمان/التخزين المؤقت، خطأ PHP في نقطة النهاية.
  • فشل AJAX (على سبيل المثال، تحميل الوسائط، البحث): admin-ajax.php يُرجع 500.
  • يعمل محليًا، وليس في الإنتاج : الاختلافات في PHP (8.1 مقابل 7.x)، والإضافات المفقودة، وحدود الذاكرة، وقواعد الخادم.
  • الرموز المختصرة أو وحدات بناء الصفحات التي "تتعطل" : تؤدي وحدة Divi/Elementor/Avada إلى حدوث خطأ فادح في الخطاف.
  • أخطاء متقطعة التحميل الزائد لـ PHP-FPM، أو حد العملية، أو ذاكرة التخزين المؤقت/CDN، أو تعارض مع OPcache.

تشخيص سريع من جانب المتصفح: افتح وحدة التحكم (F12) > علامة تبويب الشبكة، وانظر إلى الطلب الفاشل (REST/AJAX). إذا رأيت خطأ 500 في /wp-json/ ou admin-ajax.phpلديك تقدم واضح.

لماذا وصلت؟

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

ما يحدث في الخفاء: بدء تشغيل ووردبريس (الإصدار 6.9.4) وتحميله wp-config.phpثم يتم تنفيذ الإضافات والسمة. السنانيرالخطاف هو "نقطة ربط" في التنفيذ: أ عمل ينفذ التعليمات البرمجية في وقت محدد، مرشحات يُعدِّل قيمةً ما. إذا قام أحد المكونات الإضافية أو قالب موقعك بتشغيل ذلك خطأ PHP فادح (دالة غير موجودة، نوع غير صالح، خطأ في بناء الجملة)، يتوقف PHP فجأة ويعيد الخادم رمز الخطأ 500.

الأسباب المحتملة (من الأكثر شيوعاً إلى الأقل شيوعاً):

  • خطأ في PHP بعد إضافة التعليمات البرمجية (أقواس مفقودة، فاصلة منقوطة منسية، استدعاء دالة غير محملة).
  • عدم التوافق مع PHP 8.1+ (الكود القديم: معلمات مكتوبة بشكل خاطئ، وظائف مهملة تمت إزالتها، أخطاء صارمة).
  • إضافة أو قالب به خلل (تحديث حديث، تعارض بين مكونين إضافيين).
  • ذاكرة التخزين المؤقت/جدار حماية تطبيقات الويب/شبكة توصيل المحتوى (قواعد الأمان التي تحظر REST/AJAX، وذاكرة التخزين المؤقت التي تقدم استجابة معطلة).
  • ملف .htaccess تالف أو قواعد إعادة كتابة غير صالحة (Apache/LiteSpeed).
  • أذونات الملفات/المجلدات غير صحيح (غالباً بعد عملية نقل أو استعادة الملفات عبر بروتوكول نقل الملفات).
  • حد الذاكرة / مهلة زمنية (يولد أحيانًا 500 اعتمادًا على التكوين).
  • PHP-FPM مشبع (Nginx/Apache+FPM) أو تعطل المجمع.
  • إضافة PHP مفقودة (نادر الحدوث، ولكنه يحدث بعد تغيير إصدار PHP).

أحد الأمثلة الشائعة: "500 فقط في صفحة واحدة". كثيراً ما أرى هذا في صفحات Elementor/Divi الثقيلة جداً: حيث يقوم أحد المكونات البرمجية بتشغيل طلب يستهلك موارد أكثر، أو يتجاوز حدود الذاكرة، أو يستدعي دالة من مكون إضافي معطل.

المتطلبات الأساسية قبل البدء

احفظ الملف قبل إجراء أي تغييرات. إذا لم يعد لديك صلاحية الوصول إلى لوحة التحكم، فقم على الأقل بعمل نسخة من wp-config.php والملف wp-contentوقم بتصدير قاعدة البيانات إن أمكن عبر phpMyAdmin.

  • الإصدار المستهدف ووردبريس 6.9.4، PHP 8.1+ (موصى به). إذا كنت لا تزال تستخدم PHP 7.4/8.0، فتوقع حدوث مشاكل في التوافق، لذا يُرجى تحديث إصدار PHP أولاً.
  • الوصول مطلوب بروتوكول نقل الملفات (FTP/SFTP) أو مدير ملفات مزود الاستضافة. من الأفضل الوصول إلى سجلات النظام (cPanel، Plesk، لوحة تحكم مخصصة، أو SSH).
  • أدوات مفيدة :

قاعدة ذهبية : لا تقم بتعديل النواة (قضية wp-includes, wp-admin). قم بالتصحيح عبر الإضافة، أو القالب الفرعي، أو إعدادات الخادم.

الحل الأول: تفعيل التسجيل والبحث عن خطأ PHP الفعلي

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

أين يتم إجراء التغيير

في wp-config.php، في المجلد الرئيسي لتثبيت ووردبريس الخاص بك. احفظ الملف أولاً.

قبل (التكوين النموذجي الذي يخفي الخطأ)

<?php
// ... contenu existant ...

/* C'est souvent vide ou absent : aucune trace exploitable en cas de 500 */

بعد (تمكين تسجيل الأحداث دون عرض الأخطاء للزوار)

<?php
// ... contenu existant ...

/* Sauvegardez avant de modifier : une erreur de syntaxe ici peut bloquer tout le site. */
define( 'WP_DEBUG', true );

/* Écrit les erreurs dans wp-content/debug.log */
define( 'WP_DEBUG_LOG', true );

/* N'affiche pas les erreurs à l'écran (évite de divulguer des infos sensibles) */
define( 'WP_DEBUG_DISPLAY', false );

/* Optionnel : force le non-affichage côté PHP */
@ini_set( 'display_errors', '0' );

/* ... gardez cette ligne en dernier si elle existe déjà */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

لماذا يُصلح هذا الخطأ (أو بالأحرى: لماذا يُساعد): الخطأ 500 هو عرضٌ للمشكلة. هنا، أنت تُجبر ووردبريس على كتابة الخطأ في ملف قابل للقراءة.

ماذا تقرأ بعد ذلك؟

فتح wp-content/debug.logبحث عن:

  • خطأ فادح في PHP
  • نوع غير معلوم خطأ
  • نفدت مساحة الذاكرة المسموح بها
  • الدعوة إلى وظيفة غير معروف
  • لم يتم العثور على الفئة

مثال حقيقي أراه طوال الوقت بعد عملية النسخ واللصق في functions.php :

PHP Parse error:  syntax error, unexpected token "}" in /wp-content/themes/mon-theme-enfant/functions.php on line 42

في هذه الحالة، يكون التصحيح ميكانيكيًا: لديك قوس إضافي، أو قوس مفقود.

مثال "قبل" (معطل): تم لصق المقتطف في المكان الخطأ + بناء الجملة

حيث ينكسر : wp-content/themes/votre-theme-enfant/functions.php (أو إضافة مقتطفات). احفظ الملف أولاً.

<?php
add_action( 'init', 'bpcab_enregistrer_cpt' );

function bpcab_enregistrer_cpt() {
	register_post_type( 'livre', array(
		'public' => true,
		'label'  => 'Livres',
	) );
} // <-- Jusque-là OK

} // <-- Accolade en trop : fatal error (parse error)

مثال "بعد" (مصحح)

<?php
add_action( 'init', 'bpcab_enregistrer_cpt' );

function bpcab_enregistrer_cpt() {
	register_post_type(
		'livre',
		array(
			'public' => true,
			'label'  => 'Livres',
		)
	);
}

حالة شائعة أخرى: استدعاء الدالة مبكراً جداً (خطاف غير مناسب)

خطاف غير متكيف قد يتسبب هذا في حدوث خطأ إذا استخدمت واجهة برمجة تطبيقات قبل توفرها (أو إذا لم يقم الملحق بتحميل فئاته بعد). وقد ينتج عن ذلك خطأ 500.

AVANT : استدعاء دالة من دالة مكون إضافي يفترض أنها نشطة، دون التحقق منها.

<?php
add_action( 'init', function () {
	// Exemple : vous supposez qu'une fonction de plugin existe
	ma_fonction_de_plugin_tiers(); // Fatal error si le plugin est désactivé
} );

بعد : فحص دفاعي + تراجع.

<?php
add_action( 'init', function () {
	/* On vérifie l'existence avant d'appeler : évite une 500 si le plugin manque */
	if ( function_exists( 'ma_fonction_de_plugin_tiers' ) ) {
		ma_fonction_de_plugin_tiers();
		return;
	}

	// Fallback : loggez l'info pour corriger proprement ensuite
	if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
		error_log( '[bpcab] ma_fonction_de_plugin_tiers() indisponible : plugin tiers manquant ?' );
	}
} );

مراجع رسمية مفيدة:

الحل الثاني: عزل تعارض الإضافات/القوالب دون تعطيل الموقع

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

الخطوة أ - تعطيل جميع الإضافات (بدون لوحة تحكم ووردبريس)

حيث عبر بروتوكول نقل الملفات (FTP/SFTP) أو مدير الملفات.

  1. اذهب wp-content/.
  2. أعد تسمية المجلد plugins en plugins.off.
  3. اختبر موقعك الإلكتروني و /wp-admin.

إذا عاد الموقع للعمل: لديك إضافة معيبة (أو تعارض بين الإضافات). أعد تثبيت المجلد. pluginsثم أعد تسمية كل إضافة على حدة:

  • wp-content/plugins/nom-pluginnom-plugin.off

في تجربتي، غالبًا ما تأتي رسالة الخطأ 500 "post update" من إضافة أدخلت تبعية PHP (امتداد مفقود) أو خطأ فادح في مسار REST.

الخطوة ب - اختبار القالب (بما في ذلك Divi 5 / Avada / القالب المخصص)

Si عطل لا تُغيّر الإضافات أي شيء، اختبر القالب.

  • أعد تسمية مجلد القالب النشط الخاص بك في wp-content/themes/ (السابق : dividivi.off, avadaavada.off).
  • سيقوم ووردبريس بالتبديل إلى قالب متاح (غالباً ما يكون قالباً افتراضياً إذا تم تثبيت قالب).

أدوات إنشاء صفحات الملاحظات :

  • ديفي 5 قد ينشأ خطأ 500 من وحدة/إضافة خارجية لـ Divi. ويكشف اختبار "تعطيل الإضافات" عن ذلك بسرعة.
  • Elementor الـ 500 على /wp-json/ تكثر المشاكل أثناء التحرير في حال وجود تعارضات أمنية أو متعلقة بذاكرة التخزين المؤقت. ويُعدّ اختبار الإضافات والسجلات الطريقة الأكثر فعالية من حيث التكلفة.
  • فتح احذر من ذاكرة التخزين المؤقت (Fusion/Avada + إضافة التخزين المؤقت + شبكة توصيل المحتوى). قد يتم إخفاء خطأ 500 بواسطة صفحة خطأ مخزنة مؤقتًا.

الخطوة ج - التشخيص الذاتي عبر فحص الصحة (إذا كان لديك صلاحيات المسؤول)

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

مثال نموذجي لرمز "قبل/بعد" لحالة تعارض

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

AVANT (معطل): يجب أن تُرجع الدالة التصفية سلسلة نصية، ولكنها تُرجع مصفوفة.

<?php
/* À coller dans functions.php du thème enfant (ou mieux : un plugin custom) */
add_filter( 'the_content', 'bpcab_filtre_contenu_casse' );

function bpcab_filtre_contenu_casse( $content ) {
	// Mauvaise idée : on retourne un tableau au lieu du contenu
	return array( 'contenu' => $content );
}

بعد (تم التصحيح): نحن بالفعل نقوم بإرجاع سلسلة نصية.

<?php
add_filter( 'the_content', 'bpcab_filtre_contenu_ok' );

function bpcab_filtre_contenu_ok( $content ) {
	/* Un filtre doit retourner la valeur filtrée, ici une chaîne */
	return (string) $content;
}

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

الحل الثالث: تصحيح المشكلات الشائعة من جانب الخادم (ملف .htaccess، الأذونات، PHP-FPM، الذاكرة)

عندما لا يكون الأمر متعلقًا بمكون إضافي/قالب، فإنه غالبًا ما يكون "أسفل": قواعد أباتشي، أو الأذونات، أو موارد PHP.

ملف .htaccess تالف (Apache/LiteSpeed)

العرض النموذجي: ظهور خطأ 500 في جميع أنحاء الموقع، بما في ذلك صفحة واحدة، أحيانًا بعد تغيير الروابط الدائمة أو تثبيت إضافة التخزين المؤقت.

تشخيصي

إعادة تسمية .htaccess (في الجذر) في .htaccess.offثم أعد الاختبار. إذا عادت المشكلة، فهذه هي المشكلة.

إصلاح

إنشاء ملف .htaccess ووردبريس بسيط، ثم انتقل إلى الإعدادات> الروابط الثابتة ثم انقر على "حفظ" لإعادة الإنشاء.

# Fichier : /.htaccess
# Sauvegardez avant de modifier. Ce fichier est critique sur Apache/LiteSpeed.
# Les directives ci-dessous ne sont pas du PHP.
# Je les fournis ici comme référence : collez-les dans .htaccess (texte brut).

# BEGIN WordPress
<IfModule mod_rewrite.c>
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]
</IfModule>
# END WordPress

المرجع الرسمي: ووردبريس على أباتشي

أذونات الملفات/المجلدات

بعد عملية نقل البيانات، ألاحظ غالبًا وجود صلاحيات إما صارمة للغاية (خطأ 403/500) أو متساهلة للغاية (مما يُشكل خطرًا أمنيًا). قد يظهر خطأ 500 إذا لم يتمكن PHP من قراءة ملف ضروري.

  • الملفات: 755
  • Fichiers: 644
  • wp-config.php : غالباً 640 ou 600 حسب نوع الإقامة

إذا كان لديك SSH، يمكنك تصحيح هذا (تكييفه مع سياقك). انتباه قد يؤدي تنفيذ أمر ما بشكل غير صحيح في المكان الخطأ إلى تعطيل مواقع أخرى على الخادم.

# À lancer à la racine du site WordPress
find . -type d -exec chmod 755 {} ;
find . -type f -exec chmod 644 {} ;

إشارة: تعزيز أمان ووردبريس: أذونات الملفات

حدود الذاكرة / مهلات الانتظار (غالباً ما يتم إخفاؤها على شكل 500)

في الصفحات الثقيلة (Elementor، Divi 5، Avada، استيراد العروض التوضيحية)، يمكن أن يتسبب نقص الذاكرة في حدوث خطأ 500 أو تعطل PHP.

في debug.logسترى غالباً ما يلي:

PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted ...

يمكنك زيادة ذاكرة ووردبريس في wp-config.php.

<?php
/* À placer dans wp-config.php, avant "That's all, stop editing!" */

/* Sauvegardez avant de modifier. */
define( 'WP_MEMORY_LIMIT', '256M' );

/* Mémoire pour l'admin (éditeur, imports) */
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

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

إشارة: زيادة الذاكرة المخصصة لـ PHP

PHP-FPM مشبع (Nginx/Apache + FPM)

العرض: أخطاء 500 متقطعة، خاصة أثناء حركة المرور العالية، وأحيانًا فقط في ملف admin-ajax.php أو wp-json. تُظهر سجلات الخادم رسائل FPM (على سبيل المثال، "وصل الخادم إلى pm.max_children").

لن تتمكن من حل هذه المشكلة باستخدام مقتطف من ووردبريس. أنت بحاجة إلى:

  • قم بزيادة الموارد (وحدة المعالجة المركزية/ذاكرة الوصول العشوائي) أو اضبط تكوين FPM.
  • تقليل الحمل (التخزين المؤقت، والتحسين، والحد من استخدام المكونات الإضافية التي تستهلك موارد كثيرة).
  • تحقق من سجلات Nginx/Apache + FPM.

إذا كنت تستخدم استضافة مشتركة: أرسل للدعم الوقت المحدد + عنوان URL الذي فشل الاتصال به + عنوان IP الخاص بك. هذا يُسرّع الأمور بشكل كبير.

إصدار PHP غير صحيح / إضافة مفقودة

يعمل ووردبريس 6.9.4 بكفاءة عالية على PHP 8.1 والإصدارات الأحدث. إذا كنت تستخدم إصدارًا أقدم، فقد لا تعمل بعض الإضافات الحديثة. أما إذا كنت تستخدم إصدارًا أحدث... تجاوز في PHP 8.3/8.4 ومع وجود إضافة قديمة، يمكنك أيضًا الحصول على خطأ 500.

تحقق من إصدار PHP على استضافتك، واطلع على متطلبات PHP على جانب WordPress:


مخطط التشخيص السريع (العرض ← الفحص ← الحل)

عرض السبب المحتمل التحقق الحلول
500 في كل مكان (الواجهة الأمامية + لوحة التحكم) ملف .htaccess تالف / خطأ فادح عند التحميل أعد تسمية ملف .htaccess، وقم بتفعيل ملف debug.log إعادة إنشاء ملف .htaccess + إصلاح خطأ PHP
500 بعد تفعيل الملحق خلل في الإضافة / عدم توافق PHP أعد تسمية مجلد wp-content/plugins أعد تفعيل كل إضافة على حدة، وقم بتحديثها أو استبدالها.
خطأ 500 فقط في لوحة تحكم ووردبريس إضافة الإدارة / الذاكرة / جدار حماية تطبيقات الويب ملف debug.log + سجلات الخادم + اختبار بدون إضافات قم بزيادة الذاكرة، وتعطيل الملحق المعيب، وضبط مستوى الأمان.
خطأ في واجهة برمجة تطبيقات REST رقم 500 (لم يحفظ الناشر البيانات) خطأ في PHP على مسار REST / حظر الأمان وحدة تحكم المتصفح + مراقب الاستعلامات أصلح الخطأ الفادح، وأضف /wp-json/ إلى قائمة السماح في جدار حماية تطبيقات الويب (WAF).
500 متقطع PHP-FPM مشبع / ذاكرة التخزين المؤقت / شبكة توصيل المحتوى (CDN) سجلات FPM + الارتباط بحركة المرور اضبط موارد FPM، وقم بتحسين الأداء، وصحح ذاكرة التخزين المؤقت.

عمليات التحقق بعد التصحيح

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

  1. الواجهة الأمامية : الصفحة الرئيسية، مقال، أداة إنشاء الصفحات (Elementor/Divi/Avada)، صفحة تحتوي على نموذج.
  2. إداري : الاتصال، تحرير مقال، تحديث قائمة، تحميل صورة.
  3. REST API : امتحان https://votre-site.tld/wp-json/ (يجب أن تُرجع JSON، وليس خطأ 500).
  4. AJAX افتح وحدة تحكم المتصفح، وتأكد من عدم وجود طلبات خطأ 500.
  5. سجلات أعد القراءة wp-content/debug.log وتأكد من عدم وجود المزيد من رسائل "خطأ فادح".

عندما يصبح كل شيء مستقرًا، قم بتعطيل تصحيح الأخطاء المطول في بيئة الإنتاج (احتفظ بالسجل إذا كنت تعرف كيفية مراقبته). debug.log يشكل التعرض أو الحجم الكبير خطراً (معلومات حساسة + مساحة القرص).

إذا لم ينجح ذلك أيضاً

إليك إجراءً يعمل حتى عندما يكون الموقع معطلاً تماماً. اتبع الترتيب. لا تتجاوز أي خطوة.

1) تحقق من سجلات الخادم (فهي أكثر موثوقية من أي شيء آخر)

بحسب مجموعة الأدوات التي تستخدمها:

  • أباتشي: error_log
  • Nginx: error.log
  • PHP-FPM: سجل المجمع

أنت تبحث عن الوقت المحدد لظهور خطأ 500 وملف PHP المعني. إذا لم يكن لديك صلاحية الوصول إليه، فاطلب من الدعم الفني: "هل يمكنك تزويدي بسطر الخطأ الموافق لهذا الوقت على هذا الرابط؟"

2) فرض تثبيت ووردبريس بسيط (إيقاف الإضافات + إيقاف القوالب)

  1. إعادة تسمية wp-content/pluginsplugins.off
  2. أعد تسمية القالب النشط → theme.off
  3. أعد الاختبار

إذا لم يعد يعمل بعد ذلك، فمن المحتمل أنك تواجه مشكلة في الخادم، أو ملف أساسي تالف، أو مكون إضافي (mu-plugin).

3) تحقق من إضافات mu

ال مو الإضافات (الإضافات التي يجب استخدامها) يتم تحميلها تلقائيًا من wp-content/mu-pluginsتقوم العديد من المواقع المُدارة (وبعض مزودي خدمات الاستضافة) بتثبيتها. يؤدي وجود خلل في إضافة mu-plugin إلى ظهور خطأ 500 مستمر حتى عند تعطيل جميع الإضافات.

  • الاختيار wp-content/mu-plugins/
  • قم بتغيير اسم ملف مشبوه مؤقتًا (على سبيل المثال، xxx.phpxxx.php.off)

4) تحقق من وجود ذاكرة تخزين مؤقتة/شبكة توصيل محتوى (CDN) قوية

لقد رأيت بالفعل خطأً وهمياً من نوع 500 يتم تقديمه بواسطة خادم وسيط بينما كان الخادم يستجيب بشكل صحيح.

  • قم بمسح ذاكرة التخزين المؤقت للملحق (إن أمكن الوصول إليها).
  • قم بمسح ذاكرة التخزين المؤقت للخادم (ذاكرة التخزين المؤقت لـ LiteSpeed، وذاكرة التخزين المؤقت لـ Nginx، وVarnish).
  • إذا كان Cloudflare/ما يعادله: قم بالتنظيف، ثم اختبر عن طريق التجاوز (وضع المطور، أو التعطيل المؤقت).
  • قم بالاختبار في وضع التصفح الخاص + عن طريق تبديل الشبكات (4G) لمسح ذاكرة التخزين المؤقت المحلية.

5) إعادة الكتابة / الروابط الدائمة

إذا تعطلت عناوين URL معينة فقط (غالباً ما تكون "روابط دائمة جيدة")، فأعد إنشاء القواعد:

  • wp-admin > الإعدادات > الروابط الدائمة > "حفظ".

إذا لم يكن لديك صلاحيات المسؤول، فسيتم إجراء إعادة التوليد اليدوي عبر ملف .htaccess (Apache) أو تكوين Nginx (الدعم/الاستضافة).

6) تحقق من الملفات الأساسية (تلف / تحميل غير مكتمل)

بعد انقطاع عملية التحديث، قد يكون ملف النظام الأساسي غير مكتمل. طريقة التنظيف:

  • أعد تنزيل ووردبريس 6.9.4 من wordpress.org/download
  • يستبدل uniquement wp-admin et wp-includes (لا تلمس wp-content)

7) WP-CLI (حالة متقدمة، فعالة للغاية)

إذا كان لديك SSH/WP-CLI، يمكنك سرد المكونات الإضافية وتعطيلها بشكل صحيح، حتى في حالة تعطل لوحة التحكم.

# Vérifie que WP-CLI voit bien l'installation
wp core version

# Liste les plugins
wp plugin list

# Désactive tous les plugins
wp plugin deactivate --all

# Active un plugin à la fois
wp plugin activate nom-du-plugin

إشارة: إضافة ووردبريس (WP-CLI)

الأخطاء الشائعة والمزالق

عرض السبب المحتمل يوصى بالحل
500 مباشرة بعد لصق الرمز تم لصق الكود في الملف الخطأ أو بناء الجملة الخاطئ (; فعّل ملف debug.log، صحّح السطر، واختبر في وضع الاختبار.
500 بعد تحديث PHP الإضافة/القالب غير متوافق مع PHP 8.1+ قم بتعطيل الإضافة، أو تحديثها، أو استبدالها، أو الرجوع مؤقتًا إلى PHP 8.1/8.2
كل شيء يعمل مجدداً بعد إعادة تسمية الإضافات. تعارض في الإضافات أعد تنشيطها واحدة تلو الأخرى، مع إبقاء برنامج مراقبة الاستعلامات مفتوحًا لاكتشاف الخطأ.
500 نسخة فقط على محرر غوتنبرغ تم حظر واجهة برمجة تطبيقات REST (باستخدام جدار حماية تطبيقات الويب) أو حدث خطأ فادح في مسار REST وحدة تحكم المتصفح + ملف debug.log + إضافة /wp-json إلى القائمة البيضاء/
500 متقطع PHP-FPM مُحمّل بشكل زائد / حد الموارد سجلات FPM + التحسين + ترقية الاستضافة
تقوم "بتصحيحه"، لكنه يعود. يقدم Cache/CDN إجابة قديمة حذف الإضافة + الخادم + شبكة توصيل المحتوى + ذاكرة التخزين المؤقت للمتصفح
لا تزال مقتطفات التعليمات البرمجية "معطلة" حتى بعد تغيير المظهر تقوم إضافة Snippets أو mu-plugin دائمًا بتحميل الكود تعطيل إضافة القصاصة البرمجية / التحقق من إضافات mu

الأخطاء التي أراها غالباً بين المبتدئين:

  • تغيير ملف functions.php الخاص بالقالب الرئيسي بدلاً من القالب الفرعي: يقوم التحديث بالكتابة فوق كل شيء، وفي بعض الأحيان يصبح الملف غير متناسق.
  • نسخ كود "2020" باستخدام ممارسات قديمة: في PHP 8.1+، قد يكون هذا قاتلاً.
  • أربك عمل et مرشحات : لا تُرجع أي شيء في عامل التصفية، أو تُرجع قيمة في إجراء ما.
  • انسى مسح ذاكرة التخزين المؤقت ويعتقدون أن "الأمر لا ينجح".
  • الاختبار المباشر في بيئة الإنتاج دون حفظ البيانات: هذا يحول خطأً بسيطاً إلى حادثة.

بديل / متغير

طريقة بدون كتابة أكواد (أكثر ملاءمة للمبتدئين)

إذا كان لا يزال بإمكانك الوصول إلى لوحة تحكم ووردبريس (wp-admin)، فإن أبسط طريقة هي:

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

أسلوب أكثر تطوراً (للمطورين / الوكالات)

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

حيث : يخلق wp-content/mu-plugins/bpcab-diagnostic.php (أنشئ المجلد إذا لم يكن موجودًا).

<?php
/**
 * Plugin Name: BPCAB Diagnostic temporaire
 * Description: Logs de diagnostic pour traquer une erreur 500. À supprimer une fois le problème résolu.
 */

/* Sécurité : empêche l'accès direct au fichier */
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/* Log minimal au chargement */
add_action( 'muplugins_loaded', function () {
	if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
		error_log( '[bpcab] mu-plugin diagnostic chargé - ' . gmdate( 'c' ) );
	}
}, 1 );

/* Capture des erreurs fatales à la fin du script (utile si le serveur ne logge pas bien) */
register_shutdown_function( function () {
	$erreur = error_get_last();

	if ( empty( $erreur ) ) {
		return;
	}

	$types_fatals = array( E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR );

	if ( ! in_array( $erreur['type'], $types_fatals, true ) ) {
		return;
	}

	error_log(
		sprintf(
			'[bpcab] Fatal capturée: %s dans %s:%d',
			$erreur['message'],
			$erreur['file'],
			(int) $erreur['line']
		)
	);
} );

صعب يتم تحميل إضافة mu-plugin مع كل طلب. قم بإزالتها بمجرد تحديد السبب، وإلا ستستمر البيانات غير الضرورية في سجلات النظام.

تجنب هذه المشكلة في المستقبل

  • العمل في مجال تجهيز المسارح : نسخة طبق الأصل من موقعك لاختبار التحديثات والمقتطفات.
  • تجنب المقاطع "السحرية" بدون مصدر أو تاريخ. إذا لم يذكر الكود استخدام PHP 8.1 أو أحدث، وإصدارًا حديثًا من ووردبريس، فكن حذرًا.
  • احتفظ بنمط فرعي (Divi/Avada) وإضافة مخصصة لإضافاتك. لقد استعدتُ مواقع كثيرة كانت فيها 30 مقتطفًا برمجيًا في غير موضعها.
  • راقب السجلات (حتى مرة واحدة في الأسبوع). قد يتحول إشعار اليوم إلى إشعار كارثي غدًا بعد التحديث.
  • الحد من الإضافات الزائدة (3 ذاكرات تخزين مؤقتة، ميزتان أمنيتان، 4 محسنات): إنها أرض مثالية لـ 500 متقطعة.

أفضل الممارسات: ضع مقتطفاتك في إضافة صغيرة (بدلاً من ملف functions.php)

تمنع إضافة صغيرة اختفاء التعليمات البرمجية الخاصة بك عند تغيير القالب، ويمكن تعطيلها بنقرة واحدة (أو عبر WP-CLI).

حيث : يخلق wp-content/plugins/bpcab-snippets/bpcab-snippets.phpثم قم بتفعيله.

<?php
/**
 * Plugin Name: BPCAB Snippets
 * Description: Snippets personnalisés du site (WordPress 6.9.4+, PHP 8.1+).
 * Version: 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/* Exemple : un hook (action) exécuté après chargement du thème */
add_action( 'after_setup_theme', function () {
	// Code sûr et minimal. Ajoutez vos fonctions ici, testées en staging.
} );

مرجع حول الإضافات: دليل الإضافات: أساسيات الإضافات

الموارد

أسئلة fréquentes

هل يكون الخطأ 500 دائمًا ناتجًا عن ووردبريس؟

لا. قد يتسبب ووردبريس في ظهور خطأ 500 (خطأ PHP فادح)، ولكن قد يتسبب ملف .htaccess تالف، أو تحميل زائد على PHP-FPM، أو مشكلة في جدار حماية تطبيقات الويب (WAF) في نفس المشكلة. لهذا السبب، تُعد سجلات الخادم في أغلب الأحيان المصدر الأكثر موثوقية.

لماذا أرى خطأ 500 ولكن لا أرى أي خطأ في ووردبريس؟

لأن ووردبريس قد لا يملك الوقت الكافي لكتابة أي شيء إذا حدث الخطأ مبكرًا جدًا، أو لأن التسجيل معطل. فعّل WP_DEBUG_LOG وتحقق أيضًا من سجلات Apache/Nginx/PHP.

لم أعد أستطيع الوصول إلى لوحة تحكم ووردبريس (wp-admin). ما الذي يجب عليّ فعله أولاً؟

إعادة تسمية wp-content/plugins لتعطيل جميع الإضافات. إذا لم ينجح ذلك، اختبر القالب (أعد تسمية مجلد القالب النشط)، ثم تحقق. wp-content/mu-plugins.

هل يُعدّ تفعيل خاصية WP_DEBUG على موقع إنتاجي أمرًا خطيرًا؟

يمكن ذلك إذا قمت بعرض الأخطاء على الشاشة. استخدم WP_DEBUG_DISPLAY à false قم بتسجيل البيانات في ملف. لا تترك وضع تصحيح الأخطاء مُفعّلاً إلى أجل غير مسمى.

هل يمكن أن يكون سبب الخطأ 500 هو إضافة التخزين المؤقت؟

نعم. بعض الإضافات تُضيف قواعد للخادم (Apache/Nginx)، أو تُصغّر حجم النصوص البرمجية، أو تتداخل مع REST/AJAX. إذا كنت تشك في ذلك، فامسح ذاكرة التخزين المؤقت، وعطّل الإضافة مؤقتًا، ثم اختبر الموقع بدون ذاكرة التخزين المؤقت/شبكة توصيل المحتوى (CDN).

لماذا يحدث هذا العطل فقط في صفحات معينة من Elementor/Divi/Avada؟

قد تؤدي هذه الصفحات إلى زيادة عدد الطلبات، أو استهلاك المزيد من الذاكرة، أو تحميل وحدة برمجية خارجية. غالبًا ما يُشير ملف debug.log إلى "نفاد حجم الذاكرة المسموح به" أو إلى ملف وحدة برمجية/إضافة مُحددة.

هل أحتاج إلى إعادة تثبيت ووردبريس؟

ليس أولاً. أعد التثبيت wp-admin et wp-includes قد يكون ذلك مفيدًا إذا كانت الملفات الأساسية تالفة، ولكن غالبية الـ 500 تأتي من مكون إضافي أو قالب أو تكوين خادم.

لقد صححت الكود ولكن ما زلت أرى الخطأ 500.

امسح جميع ذاكرات التخزين المؤقت (الملحق، الخادم، شبكة توصيل المحتوى، المتصفح). ثم راجع السجلات: قد تجد خطأً ثانياً بعد الأول، أو ملفاً لم يتم نشره بشكل صحيح.

كيف يمكنني تجنب "نسخ ولصق" جزء من الكود الذي يُعطل كل شيء؟

اختبر الكود في بيئة تجريبية، وضع مقتطفاتك البرمجية في إضافة صغيرة، واحرص على توفير إمكانية الوصول إلى WP-CLI أو FTP. مقتطف برمجي في wp-config.php ou functions.php يُعدّ غياب النسخ الاحتياطي السبب الرئيسي وراء 500 مشكلة أقوم بإصلاحها.