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

«Allowed memory size exhausted»: رفع ذاكرة PHP في ووردبريس

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

«Allowed memory size exhausted»: رفع ذاكرة PHP في ووردبريس

يظهر خطأ «Fatal error: Allowed memory size of ... bytes exhausted» فجأة وأنت تقوم بإجراء اعتيادي: مثل تفعيل إضافة جديدة، أو حفظ مقال طويل، أو تحديث منتج في متجر WooCommerce، أو معالجة صور مرفوعة. بمجرد ظهور هذه الرسالة، تتوقف الصفحة عن التحميل وتنهار العملية فوراً.

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

فهم الفارق بين ذاكرة ووردبريس وسقف ذاكرة الخادم#

قبل الشروع في التعديل، يجب إدراك أن هناك حدين منفصلين يتحكمان في ذاكرة موقعك:

  • حد ووردبريس البرمجي (WP_MEMORY_LIMIT): افتراضياً، يحاول ووردبريس رفع ذاكرة PHP إلى 40MB في الموقع المفرد و64MB في الشبكة المتعددة (Multisite) بحسب توثيق ووردبريس. أما شاشات لوحة التحكم فتستخدم الثابت WP_MAX_MEMORY_LIMIT، وقيمته الافتراضية في شيفرة النواة هي 256M (إلا إذا كان سقف الخادم أعلى منها).
  • سقف خادم PHP المادي (php.ini memory_limit): وهو الحد الأقصى الكلي الذي تسمح به الاستضافة لكل عملية PHP (غالباً ما يكون 128MB أو 256MB). إذا كانت قيمة WP_MEMORY_LIMIT أعلى من هذا السقف، يرفعه ووردبريس بنفسه عبر ini_set()؛ ولا يبقى سقف الخادم هو الحاكم إلا إذا قفلته الاستضافة فلا يمكن تغييره من داخل PHP (مثلاً بتوجيه php_admin_value).

لذلك، الخطوة الصحيحة هي رفع حد ووردبريس أولاً، ثم رفع سقف الخادم إن لزم الأمر.

الطريقة الأولى: رفع الذاكرة من ملف wp-config.php (الأسرع والموصى بها)#

هذا التعديل هو الخطوة الأولى دائماً لأنه يرفع الحد الداخلي لووردبريس مباشرة:

  1. ادخل إلى ملفات موقعك عبر مدير الملفات في cPanel أو عبر اتصال FTP/SFTP.
  2. افتح مجلد موقعك الرئيسي (غالباً public_html) وحرر ملف wp-config.php.
  3. انزل في الملف حتى تجد سطر:
    /* That's all, stop editing! Happy publishing. */
  4. قبل هذا السطر مباشرة، أضف السطرين التاليين:
    define('WP_MEMORY_LIMIT', '256M');
    define('WP_MAX_MEMORY_LIMIT', '512M');
  5. احفظ الملف، ثم أعد تحميل الصفحة التي كانت تفشل في موقعك.

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

الطريقة الثانية: رفع الذاكرة من لوحة التحكم cPanel#

إذا لم تنجح الطريقة الأولى، فهذا يعني غالباً أن الاستضافة تقفل سقف الـ PHP العام على الخادم عند قيمة أقل من 256MB فلا يستطيع ووردبريس رفعه. يمكنك رفعه من cPanel بإحدى طريقتين بحسب إعدادات استضافتك:

الخيار أ: عبر محرّر MultiPHP INI Editor#

  1. سجل الدخول إلى cPanel، وابحث عن أداة MultiPHP INI Editor.
  2. اختر اسم نطاقك أو المجلد الرئيسي من القائمة المنسدلة.
  3. ابحث عن خيار memory_limit في قائمة الإعدادات.
  4. غيّر القيمة من 128M أو 64M إلى 256M (أو 512M إن كانت استضافتك تسمح بذلك).
  5. اضغط على زر Apply / تطبيق أسفل الصفحة.

الخيار ب: عبر Select PHP Version#

  1. في cPanel، افتح أداة Select PHP Version.
  2. انتقل إلى تبويب Options.
  3. انزل إلى أسفل الصفحة حتى خيار memory_limit، واضغط على القيمة واختر 256M أو 512M من القائمة المنسدلة.

الطريقة الثالثة: التعديل عبر ملف .htaccess (لخوادم Apache)#

إذا كانت استضافتك تعمل بخادم Apache وتسمح بتعديل توجيهات PHP عبر .htaccess:

  1. افتح ملف .htaccess في المجلد الرئيسي لموقعك.
  2. أضف السطر التالي في أول الملف خارج أي علامات وسوم أخرى:
    php_value memory_limit 256M
  3. احفظ الملف واختبر الموقع. (إذا ظهر خطأ 500 فور حفظ الملف، فهذا يعني أن استضافتك تمنع تعديل توجيهات PHP عبر htaccess؛ احذف السطر فوراً ليعود الموقع).

الطريقة الرابعة: على السيرفرات الخاصة (VPS / Ubuntu)#

إذا كنت تدير خادمك السحابي الخاص عبر Nginx وPHP-FPM ولم ينفع تعديل wp-config.php، فالقيمة مقفلة غالباً في إعدادات PHP على الخادم (مثل توجيه php_admin_value[memory_limit] في ملف المجمع /etc/php/8.2/fpm/pool.d/www.conf، وهو يتقدم على ini_set())، فعدّلها على الخادم نفسه:

  1. اتصل بالخادم عبر SSH.
  2. افتح ملف إعدادات PHP للإصدار المثبت لديك (مثال لـ PHP 8.2):
    sudo nano /etc/php/8.2/fpm/php.ini
  3. ابحث عن سطر memory_limit (باستخدام Ctrl+W في nano) وعدله إلى:
    memory_limit = 256M
  4. احفظ الملف (Ctrl+O ثم Enter) واخرج (Ctrl+X).
  5. أعد تشغيل خدمة PHP-FPM لتطبيق التعديل فوراً:
    sudo systemctl restart php8.2-fpm

كيف تتأكد أن حد الذاكرة تم رفعه بنجاح؟#

يمكنك التحقق من القيمة الحقيقية المطبقة فعلياً داخل ووردبريس دون الحاجة لتخمين:

  1. ادخل إلى لوحة تحكم ووردبريس.
  2. انتقل إلى أدوات > صحة الموقع (Site Health).
  3. اضغط على تبويب معلومات (Info) بالأعلى.
  4. افتح قسم الخادم (Server): ستجد سطراً يسمى حد ذاكرة PHP (PHP memory limit).
  5. افتح قسم WordPress: ستجد سطراً يسمى حد الذاكرة (Memory limit).
  6. تأكد من أن الرقمين يعرضان القيمة الجديدة (مثلاً 256M) التي قمت بضبطها.

أخطاء شائعة يجب تجنبها#

  • نسيان حرف M بعد الرقم: إذا كتبت define('WP_MEMORY_LIMIT', '256'); دون حرف M (الذي يرمز للميجابايت)، فسيقرأه النظام على أنه 256 بايت فقط. ولأن هذه القيمة أقل من الحد الحالي، يتجاهلها ووردبريس ولا يستدعي ini_set()؛ فلا ينهار الموقع، لكن الذاكرة لا ترتفع ويبقى الخطأ كما هو.
  • وضع الكود بعد سطر Stop editing: إذا وضعت تعريف الثابت في نهاية ملف wp-config.php بعد عبارة التوقف، فلن يقرأه ووردبريس لأن تهيئة النظام تكون قد اكتملت بالفعل قبل وصول التنفيذ لهذا السطر.
  • تسريب الذاكرة (Memory Leak): رفع الذاكرة هو حل استقرار ممتاز للقوالب الكبيرة ومتاجر ووكومرس، لكن إذا استمر الخطأ في الظهور حتى مع رفعها إلى 1024M، فهذا يعني وجود إضافة بها حلقة تكرار لانهائية أو خطأ برمجي يعطب الذاكرة، ويجب كشفها وتعطيلها عبر ملف السجلات.

المصادر#

التعليقات

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

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

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

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

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

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

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

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