رفع خطای Allowed Memory Size Exhausted وردپرس
دیدن یک «Fatal Error» در سایت وردپرسی شما میتواند نگرانکننده باشد. اما نگران نباشید، خطای «Allowed Memory Size Exhausted» یا «allowed memory size» یا «out of memory» یکی از رایجترین مشکلات وردپرس است و معمولا به راحتی حل میشود.
این خطا به زبان ساده یعنی وردپرس برای انجام یک کار (مانند فعال کردن یک افزونه یا بارگذاری یک صفحه) به حافظه بیشتری نیاز داشته، اما به سقف مجاز تعیینشده توسط هاست شما رسیده است. درست مانند برنامهای روی کامپیوتر شما که به دلیل کمبود RAM هنگ میکند. برای حل مشکل باید WP_MAX_MEMORY_LIMIT و WP_MEMORY_LIMIT در تنظیمات وردپرس یا memory_limit در تنظیمات php یا از طریق htaccess زیاد کنید.
دلایل اصلی بروز این خطا عبارتند از:
- محدودیت پایین حافظه PHP: اکثر شرکتهای هاستینگ برای جلوگیری از مصرف بیرویه منابع، یک محدودیت پیشفرض (مثلا 128 مگابایت) برای حافظه PHP تعیین میکنند که ممکن است برای سایت شما کافی نباشد، یا میزان Memory limit در حالت پیش فرض روی 128MB است.
- افزونه یا قالب سنگین: یک افزونه با کدنویسی ضعیف یا یک قالب چندمنظوره و سنگین میتواند به تنهایی مقدار زیادی از حافظه را مصرف کند.
- فرآیندهای همزمان: گاهی اجرای همزمان چندین اسکریپت و فرآیند در پسزمینه وردپرس، باعث رسیدن به سقف حافظه میشود.
این خطا معمولا با پیامی شبیه به این نمایش داده میشود:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 12345678 bytes)
رفع خطای Allowed Memory Size Exhausted (ارور allowed memory size)
برای حل این مشکل، ما سه روش اصلی را به ترتیب از سادهترین به پیشرفتهترین توضیح میدهیم. در اکثر موارد، همان روش اول مشکل را برطرف میکند:
روش۱: افزایش حافظه PHP از طریق فایل wp-config.php (روش پیشنهادی)
این بهترین و امنترین روش برای اکثر کاربران است، زیرا تغییرات فقط روی سایت وردپرسی شما اعمال میشود.
- وارد کنترل پنل هاست خود (مانند cPanel یا DirectAdmin) شده و به بخش File Manager بروید.
- به پوشه ریشه (root) سایت خود بروید (معمولاً public_html).
- فایل wp-config.php را پیدا کرده و آن را برای ویرایش (Edit) باز کنید.
- به انتهای فایل بروید و درست قبل از خط /* That’s all, stop editing! Happy publishing. */، کد زیر را اضافه کنید:
define('WP_MEMORY_LIMIT', '512M');
فایل را ذخیره کرده و سایت خود را بررسی کنید.
روش ۲: ویرایش فایل .htaccess
اگر ویرایش فایل wp-config.php مشکل را حل نکرد، میتوانید از این روش استفاده کنید.
- در همان File Manager، فایل .htaccess را پیدا کرده و آن را ویرایش کنید. (اگر آن را نمیبینید، تنظیمات File Manager را برای نمایش فایلهای مخفی (Show Hidden Files) فعال کنید).
- کد زیر را به انتهای فایل اضافه کرده و ذخیره کنید:
php_value memory_limit 512M
روش ۳: ویرایش فایل php.ini (برای کاربران VPS و سرورهای اختصاصی)
این روش بهترین است اما معمولا در هاستهای اشتراکی در دسترس نیست. اگر به سرور خود دسترسی root دارید، مانند زمانی که از یک vps فنلاند استفاده میکنید میتوانید مستقیما فایل پیکربندی PHP را ویرایش کنید.
- مقدار memory_limit را در فایل php.ini سرور خود پیدا کرده و آن را به 512M افزایش دهید.
- پس از ذخیره تغییرات، حتما وبسرور خود (مانند Apache یا Nginx) را restart کنید تا تغییرات اعمال شوند.
اگر نمیدونین که مسیر php.ini تنظیمات اصلی کجاست، دستور زیر داخل SSH بزنید تا مسیر این فایل php.ini براتون نشون داده بشه، بعدش فایل php.ini با ویرایشگر باز کنین و مقدار memory_limit پیدا کنین و زیاد کنین.
php -i | grep 'Configuration File'
بعد از انجام تغییرات، وب سرور و هندلر php باید ریستارت کنید.
یا میتونین داخل پوشه public_html یک فایل به اسم php.ini ایجاد کنید و فقط برای همین هاست زیاد کنید.
اگر افزایش حافظه مشکل را حل نکرد چه؟
- افزونهها را غیرفعال کنید: از طریق FTP یا File Manager، نام پوشه plugins (در مسیر wp-content) را به نام دیگری مانند plugins_old تغییر دهید. این کار تمام افزونهها را غیرفعال میکند. اگر سایت شما بالا آمد، مشکل از یکی از افزونههاست. سپس نام پوشه را به plugins برگردانید و افزونهها را یکییکی از پیشخوان وردپرس فعال کنید تا افزونه مشکلساز را پیدا کنید.
- قالب پیشفرض را فعال کنید: اگر مشکل از افزونهها نبود، قالب فعال خود را با تغییر نام پوشه آن (در مسیر wp-content/themes) غیرفعال کنید تا وردپرس به قالب پیشفرض برگردد.
اگر هاست cPanel دارید، لاگ خطاهای cPanel تو قسمت Errors نشون داده میشه. یا میتونی حالت debug mode وردپرس فعال کنی، برای انجام اینکار فایل wp-config.php باز کن و کدهای زیر بهش اضافه کنید.
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
چگونه از بروز خطای حافظه در آینده جلوگیری کنیم؟
- هاست باکیفیت انتخاب کنید: برای سایتهای بزرگ و فروشگاهی، هاستهای اشتراکی معمولی پاسخگو نیستند. خرید Vps با منابع اختصاصی به شما این اطمینان را میدهد که دیگر با خطای کمبود حافظه مواجه نخواهید شد.
- از افزونهها و قالبهای بهینه استفاده کنید: قبل از نصب یک افزونه، نظرات کاربران و تاریخ آخرین بهروزرسانی آن را بررسی کنید. از نصب افزونههای سنگین و متعدد که کار مشابهی انجام میدهند، خودداری کنید.
- همیشه همهچیز را بهروز نگه دارید: وردپرس، قالب و افزونههای خود را همیشه به آخرین نسخه آپدیت کنید. توسعهدهندگان به طور مداوم کدهای خود را برای عملکرد و امنیت بهتر، بهینهسازی میکنند.