پیام «Allowed memory size of … bytes exhausted» یعنی اجرای یک صفحه بیش از سقف حافظه‌ای که برای PHP تعیین شده، حافظه خواسته است. راه‌حل سریع بالا بردن memory_limit است؛ اما اگر بعد از ۲۵۶ مگابایت هنوز خطا می‌گیرید، مشکل از یک افزونه است نه از سقف.

عدد داخل پیام را بخوانید

پیام خطا سقف فعلی را به بایت می‌گوید:

عدد در پیام سقف فعلی
33554432 ۳۲ مگابایت
67108864 ۶۴ مگابایت
134217728 ۱۲۸ مگابایت
268435456 ۲۵۶ مگابایت

بقیه‌ی پیام هم مهم است: مسیر فایلی که در آن حافظه تمام شده، معمولاً افزونه‌ی پرمصرف را لو می‌دهد.

روش ۱: از سی‌پنل (پیشنهادی)

در سی‌پنل، MultiPHP INI Editor را باز کنید، دامنه را انتخاب کنید و مقدار memory_limit را تغییر دهید. این روش برای کل سایت اعمال می‌شود و با به‌روزرسانی وردپرس از بین نمی‌رود.

صفحه MultiPHP INI Editor در سی‌پنل برای تنظیم منطقه زمانی
MultiPHP INI Editor در سی‌پنل: مقدار memory_limit از همین صفحه تنظیم می‌شود

روش ۲: از wp-config.php

قبل از خط «That’s all, stop editing» اضافه کنید:

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

اولی برای بخش عمومی سایت و دومی برای پیشخوان است. توجه: وردپرس نمی‌تواند از سقفی که در تنظیمات PHP هاست تعیین شده بالاتر برود؛ اگر با این روش تغییری ندیدید، روش ۱ را انجام دهید.

چه مقداری مناسب است؟

نوع سایت memory_limit
وردپرس ساده، وبلاگ ۱۲۸ مگابایت
وردپرس با صفحه‌ساز ۲۵۶ مگابایت
ووکامرس ۲۵۶ مگابایت
درون‌ریزی حجیم یا فروشگاه بزرگ تا ۵۱۲ مگابایت، موقت

بالاتر بردن بی‌دلیل کمکی نمی‌کند. memory_limit سقف هر درخواست است، نه حافظه‌ی رزروشده؛ اما اگر چند درخواست همزمان هرکدام حافظه‌ی زیادی بگیرند، مجموعشان به سقف حافظه‌ی حساب هاست می‌رسد و سایت کند می‌شود یا خطای ۵۰۸ می‌دهد.

مقدار فعلی را از کجا ببینم؟

در پیشخوان وردپرس: «ابزارها ← سلامت سایت ← اطلاعات ← سرور». ردیف PHP memory limit مقدار واقعی را نشان می‌دهد.

ابزار سلامت سایت در وردپرس
سلامت سایت در وردپرس: مقدار واقعی حافظه‌ی PHP در زبانه‌ی اطلاعات

وقتی بالا بردن سقف جواب نمی‌دهد

اگر با ۲۵۶ مگابایت هنوز خطا می‌گیرید، چیزی حافظه را هدر می‌دهد:

  • افزونه‌ای که در پیام خطا آمده را غیرفعال کنید و دوباره امتحان کنید.
  • درون‌ریزی و برون‌بری: فایل را به چند بخش کوچک‌تر تقسیم کنید.
  • تصاویر خیلی بزرگ: وردپرس برای ساخت اندازه‌های مختلف یک عکس چند ده مگاپیکسلی حافظه‌ی زیادی می‌خواهد. عکس را قبل از آپلود کوچک کنید.
  • نسخه‌ی PHP قدیمی: نسخه‌های جدیدتر حافظه‌ی کمتری مصرف می‌کنند. (نسخه و تنظیمات PHP برای وردپرس)

اگر به سقف حساب هاست می‌رسید

وقتی Resource Usage نشان می‌دهد حافظه‌ی حساب (Physical Memory) مرتب پر می‌شود، سایت از پلن بزرگ‌تر شده است. در جدول پلن‌های هاست وردپرس مقدار رم هر پلن نوشته شده و می‌توانید متناسب انتخاب کنید.

سوال‌های رایج

memory_limit را ۱ گیگابایت بگذارم که خیالم راحت باشد؟

نه. فقط خطای یک افزونه‌ی معیوب را پنهان می‌کند و در ساعات شلوغ کل سهم حافظه‌ی حساب را می‌خورد.

خطا فقط موقع به‌روزرسانی یا آپلود رخ می‌دهد.

این کارها حافظه‌ی بیشتری می‌خواهند. سقف را موقتاً بالا ببرید و بعد برگردانید.

صفحه‌ی سفید هم از همین است؟

گاهی. اگر نمایش خطا خاموش باشد، کمبود حافظه به شکل صفحه‌ی سفید دیده می‌شود. (عیب‌یابی خطای ۵۰۰)