نص الخطأ يشبه هذا:
Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 20480 bytes) in /home/user/public_html/wp-content/plugins/xyz/file.php on line 120الرقم الأول هو الحد (128 ميغابايت في هذا المثال) والرقم الثاني هو ما أراد السكربت أن يحجزه حديثًا. ومسار الملف يخبرك أي إضافة أو قالب يعود إليه الخطأ. وأحيانًا ترى بدل الرسالة صفحة بيضاء أو خطأ 500 فقط؛ ولهذه الحالة راجع أيضًا أخطاء ووردبريس الشائعة.
لماذا تنفد الذاكرة#
كل طلب إلى ووردبريس هو تشغيل لـ PHP، ولكل تشغيل حد محدد. وعندما تصير العملية ثقيلة وتتجاوز الحد يوقفها الخادم. الأسباب الشائعة:
- إضافة ثقيلة (منشئ صفحات، نسخ احتياطي، SEO، معرض صور) على صفحة ذات بيانات كثيرة.
- رفع أو ضغط صورة كبيرة جدًا.
- استيراد أو تصدير ملف ضخم.
- حلقة أو استعلام لا ينتهي في كود القالب أو الإضافة.
- حد منخفض جدًا في الاستضافة.
نقطة مهمة: الخطأ لا يعني دائمًا أن «الموقع ضعيف». فأحيانًا تحتاج عملية معينة فقط، مثل نسخة احتياطية كاملة أو استيراد آلاف المنتجات أو رفع صورة بعشرات الميغابايت، إلى ذاكرة كبيرة لفترة قصيرة. فإذا كان الموقع يعمل بلا مشاكل في بقية الأيام فنفّذ تلك المهمة وحدها بحجم أصغر أو على دفعات، ولا ترفع الحد للأبد دون سبب. أما إذا ظهر الخطأ بلا سبب أثناء الزيارات العادية فابحث بالتأكيد عن إضافة أو قالب معيب.
اقرأ الأرقام#
الحد في الرسالة مكتوب بالبايت. وهذا تحويل بسيط للأرقام الشائعة:
| البايت في الرسالة | ما يعادله |
|---|---|
| 33554432 | 32 ميغابايت |
| 67108864 | 64 ميغابايت |
| 134217728 | 128 ميغابايت |
| 268435456 | 256 ميغابايت |
إذا كان الحد في الرسالة أقل مما كتبته في wp-config فهذا يعني أن إعدادك لم يُطبّق وأن حد PHP في الاستضافة منعه. ولمعرفة الحد الحالي افتح من لوحة التحكم قسم صحة الموقع (Site Health) ثم معلومات الخادم؛ فحد ذاكرة PHP وحد ووردبريس مكتوبان هناك.
الخطوة الأولى: رفع الحد#
هناك ثلاث طبقات ويجب أن تكون متوافقة.
1. إعداد ووردبريس#
في wp-config.php وفوق السطر «That's all, stop editing»:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );WP_MEMORY_LIMIT للجزء العام من الموقع، وWP_MAX_MEMORY_LIMIT للوحة التحكم والمهام الإدارية الثقيلة. الأرقام أمثلة؛ جرّب أولًا بقيمة أقل.
2. إعداد PHP في لوحة الاستضافة#
في cPanel ارفع قيمة memory_limit من قسم اختيار إصدار PHP أو محرر إعدادات PHP (يختلف الاسم الدقيق بحسب الاستضافة). وعلى خادم تديره بنفسك ضعها في php.ini:
memory_limit = 256Mبعد تعديل php.ini قد تحتاج إلى إعادة تشغيل PHP أو خادم الويب.
3. ملف htaccess#
بعض الاستضافات المبنية على Apache مع وحدة PHP تسمح بما يلي:
php_value memory_limit 256Mوإذا كانت الاستضافة تعمل بـ PHP-FPM أو FastCGI فإن هذا السطر يسبب خطأ 500. في هذه الحالة احذف السطر فورًا وانتقل إلى الطريقة الثانية. وخذ دائمًا نسخة احتياطية من .htaccess قبل التعديل.
الحد النهائي تحدده الاستضافة. فإذا لم تسمح لك اللوحة بقيمة أكبر فعليك التواصل مع دعم الاستضافة أو ترقية الخدمة.
الخطوة الثانية: تحديد المتسبب#
رفع الحد في الغالب يخفي العَرَض فقط. فإذا كان الاستهلاك يتجاوز 256 ميغابايت فهناك شيء لا يعمل كما يجب.
- انظر إلى الملف المذكور في الرسالة. فالمسار
plugins/اسم-الإضافةدليل مباشر. - فعّل سجل الأخطاء: شغّل
WP_DEBUGوWP_DEBUG_LOGوأوقفWP_DEBUG_DISPLAYحتى لا يُطبع الخطأ للزائر. ثم اقرأ الملفwp-content/debug.log. - عندما يحدث الخطأ في صفحة بعينها فافحص محتوى تلك الصفحة أو الإضافة المرتبطة بها.
- عطّل الإضافات واحدة تلو الأخرى؛ والطريقة الكاملة في حل تعارض إضافات ووردبريس.
- إذا ظهر الخطأ عند الرفع أو إنشاء نسخة احتياطية فقط، فصغّر الملف أو نفّذ النسخة الاحتياطية على أجزاء أصغر.
ضبط السجل دون عرض الخطأ#
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );بعد أن تجد المشكلة أوقف WP_DEBUG واحذف ملف السجل؛ فلا ينبغي أن يبقى على الموقع المباشر للأبد.
إذا علقت خارج لوحة التحكم#
أحيانًا يحدث الخطأ تمامًا عندما لا تستطيع الدخول إلى لوحة التحكم أيضًا. في هذه الحالة اعمل من مدير ملفات الاستضافة أو FTP: عدّل wp-config.php أولًا، ثم إذا لزم غيّر اسم مجلد الإضافة المشتبه بها ليتعطل. وخذ نسخة احتياطية من الملف قبل أي تغيير.
منع التكرار#
- احذف الإضافات غير المستخدمة، وحاول قدر الإمكان أن تكون لك إضافة واحدة لكل مهمة.
- صغّر الصور قبل رفعها (تحسين صور ووردبريس).
- نفّذ المهام الثقيلة كالنسخ الاحتياطي الكامل في ساعات الزيارات القليلة، وبإضافة تقسّم الملف إلى أجزاء (النسخ الاحتياطي التلقائي لووردبريس).
عندما لا تسمح الاستضافة بالتغيير#
في الاستضافات المشتركة الرخيصة يكون حد الذاكرة عادةً مقفلًا من المزوّد، ويُتجاهل إعدادك. يبقى طريقان: اطلب من الدعم رفع الحد بما يناسب الموقع، أو اجعل الموقع أخف. وإذا كان الموقع متجرًا أو ذا زيارات كثيرة فربما حان وقت ترقية الخدمة. وانظر نقاط الاستضافة في قائمة تحقق الاستضافة المشتركة.
الخلاصة#
- تقول الرسالة إن تشغيل PHP تجاوز حد ذاكرته؛ ومسار الملف فيها دليل المتسبب.
- ارفع الحد بتناسق في
wp-config.php(WP_MEMORY_LIMIT) وإعدادات PHP في الاستضافة، و.htaccessإن أمكن. - الحد الفعلي تحدده الاستضافة؛ فاسأل الدعم.
- سجل الأخطاء وتعطيل الإضافات واحدة تلو الأخرى يكشفان المتسبب.
- رفع الحد ليس حلًا دائمًا؛ استبدل الإضافة الثقيلة أو صغّر المهمة.