رفع خطای Fatal error: Allowed memory size exhausted در المنتور (راهنمای عملی و سریع)

سوال کاربر:

در زمان ادیت صفحه جدید یا ادیت صفحات قدیمی با المنتور خطای زیر رو دریافت میکنین:
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 139264 bytes)

سلام به همه همراهان عزیز!

قبل از اینکه سریع سراغ بالا بردن سقف رم هاست برید، یک نکته خیلی مهم رو باید بدونید: در خیلی از مواقع، این خطا اصلاً به خاطر کمبود واقعی حافظه نیست!

خیلی وقت‌ها یک تداخل کوچک بین افزونه‌ها یا ناهمخوانی قالب با المنتور باعث میشه کدهای سایت وارد یک حلقه بی‌نهایت (Loop) بشن. توی این حالت، پردازش سایت در یک چرخه تکراری گیر می‌کنه و مدام از سرور تقاضای حافظه بیشتر می‌کنه؛ در صورتی که در حالت عادی اصلاً به این مقدار رم نیاز نداره و حتی اگر رم را روی ۲ گیگابایت هم بگذارید، باز هم پر میشه!

برای اینکه بفهمیم مشکل از حلقه و تداخله یا واقعاً رم کم آوردیم، مراحل زیر رو به ترتیب دنبال کنید:

۱. تست تداخل افزونه‌ها و قالب (اولین و مهم‌ترین قدم)

چون احتمال گیر کردن کدهای سایت در لوپ بالاست، اول از همه تداخل‌ها رو ایزوله کنید:

  • تمام افزونه‌ها (به‌جز خود المنتور و المنتور پرو) رو موقتاً غیرفعال کنید.
  • قالب سایت رو برای چند لحظه روی یک قالب خام مثل Hello Elementor یا قالب‌های پیش‌فرض وردپرس بگذارید.

حالا صفحه المنتور رو باز کنید؛ اگر مشکل حل شد، یعنی قطعا یک تداخل کد باعث ایجاد لوپ و مصرف کاذب رم شده بود. حالا افزونه‌ها رو یکی‌یکی فعال کنید تا افزونه معیوب پیدا بشه.

۲. افزایش میزان حافظه در فایل wp-config.php

اگر تداخلی وجود نداشت و سایت واقعاً برای پردازش المان‌های سنگین به حافظه بیشتری نیاز داشت، سقف حافظه وردپرس رو بالا ببرید. کد زیر رو قبل از خط /* That’s all, stop editing! Happy publishing. */ در فایل wp-config.php قرار بدید:

define( ‘WP_MEMORY_LIMIT’, ‘1024M’ );
define( ‘WP_MAX_MEMORY_LIMIT’, ‘1024M’ );

۳. تنظیم محدودیت حافظه از طریق php.ini یا .user.ini

در پوشه اصلی سایت (public_html) فایل php.ini یا .user.ini رو ادیت کنید (یا بسازید) و مقادیر زیر رو توش قرار بدید:

memory_limit = 1024M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300

۴. اعمال تغییرات در فایل .htaccess

اگر وب‌سرور شما لایت‌اسپید یا آپاچی هست، کد زیر رو به انتهای فایل .htaccess اضافه کنید:

php_value memory_limit 1024M

5. افزایش مقدار مموری از طریق MultiPHP INI Editor در سی پنل

طبق تصویر زیر وارد سی پنل شده و از بخش Software روی MultiPHP INI Editor کلیک نمایید.

MultiPHP INI Editor در سی پنل

سپس از بخش memory_limit مقدار مموری را افزایش دهید. توجه داشته باشید این افزایش مموری با مطابق با منابع پردازشی هاست شما باشد و اگر بیش از اندازه افزایش دهید تاثیری در رفع مشکل شما نخواهد داشت. برای مثال اگر از هاست لینوکس سی پنل ایران میهن وب هاست استفاده می کنید، مقدار memory_limit را روی 1024 mb میتوانید قرار دهید.

تغییر مقادیر MultiPHP INI Editor

6. ارتقای نسخه PHP

نسخه‌های قدیمی PHP مثل 7.4 مدیریت حافظه ضعیف‌تری دارند و بیشتر دچار Memory Leak یا گیر کردن در لوپ‌های پردازشی می‌شن. از cPanel یا DirectAdmin نسخه PHP رو به 8.3 یا 8.4 ارتقا بدید. در صورتیکه  افزونه یا قالبی در سایت نصب کرده اید که با نسخه های بالاتر php سازگار نیست، از نسخه های پایین مانند 8.1 یا 8.2 استفاده نمایید.

نکته پشتیبانی: اگر تمام مراحل بالا را انجام دادید اما همچنان مشکل وجود داشت، کافیست درخواست پشتیبانی برای ما ارسال نمایید تا در اسرع وقت مشکل شما بررسی و رفع شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *