آموزش رفع خطای Memory Exhausted در وردپرس: راهنمای جامع و کاربردی
خطای Memory Exhausted یعنی پردازش PHP به محدودیت حافظه مجاز رسیده است؛ راهحل، بررسی سقف واقعی حافظه و سپس افزایش مجاز آن یا اصلاح پردازش پرمصرف است، نه صرفاً اضافهکردن یک خط کد. در «آموزش رفع خطای Memory Exhausted در وردپرس: راهنمای جامع و کاربردی» از خواندن پیام خطا شروع میکنیم و به تنظیم حافظه، یافتن عامل مصرف و آزمایش نتیجه میرسیم. تعریف این محدودیت در مستندات رسمی PHP آمده است.
خطای Memory Exhausted چیست و پیام آن چه میگوید؟
این خطا زمانی رخ میدهد که یک اسکریپت برای ادامه اجرا به حافظه بیشتری از مقدار مجاز نیاز داشته باشد. منظور، فضای ذخیرهسازی هاست نیست؛ بنابراین خالیکردن پوشه دانلودها لزوماً کمکی نمیکند. مقدار memory_limit سقف حافظهای است که اسکریپت میتواند تخصیص دهد، نه مقدار حافظهای که از ابتدا برای آن رزرو شده باشد؛ مطابق تعریف memory_limit در PHP.
نمونه فرضی پیام خطا:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
عدد اول سقف مجاز را نشان میدهد؛ در این مثال معادل ۱۲۸ مگابایت با مبنای دودویی است. عدد دوم درخواست تخصیص بعدی است که موفق نشده؛ از آن نمیتوان نتیجه گرفت کل مشکل فقط با افزودن همان مقدار حل میشود.
| عدد بایت در پیام | معادل در تنظیم حافظه |
|---|---|
| 134217728 | 128M |
| 268435456 | 256M |
| 536870912 | 512M |
نام فایل و شماره خط انتهای پیام را نیز نگه دارید. این اطلاعات نقطه شروع بررسی است، نه مدرک کافی برای حذف افزونه یا دستکاری فایلهای هسته.
قبل از تغییر حافظه، چه چیزهایی را بررسی کنیم؟
ابتدا مشخص کنید خطا در چه عملیاتی رخ میدهد، محدودیت فعلی چقدر است و آخرین تغییر سایت چه بوده است. بدون این اطلاعات ممکن است حافظه را افزایش دهید، اما علت اصلی پنهان بماند. راهنمای تنظیمات وردپرس نیز هشدار میدهد که افزایش حافظه میتواند مشکل زیربنایی را موقتاً پنهان کند.
- از فایلها و پایگاه داده نسخه پشتیبان مستقل بگیرید و یک کپی از wp-config.php نگه دارید.
- عملیات خطادار را یادداشت کنید؛ مثلاً ذخیره صفحه، بارگذاری تصویر، درونریزی یا ساخت بسته نصبی.
- در پیشخوان، بخش «ابزارها ← سلامت سایت ← اطلاعات» را بررسی کنید. اطلاعات سرور و ثابتهای وردپرس را برای مقایسه ثبت کنید؛ این دادهها در ابزار اطلاعات سلامت سایت وردپرس گردآوری میشوند.
- زمان خطا و تغییرات اخیر، مانند نصب افزونه یا بهروزرسانی قالب، را بنویسید.
- برای آزمایش، ترجیحاً یک نسخه آزمایشی جدا از سایت اصلی داشته باشید.
اگر فقط صفحه سفید میبینید، کمبود حافظه را قطعی فرض نکنید. برای بررسی مسیرهای دیگر، راهنمای رفع صفحه سفید مرگ وردپرس را دنبال کنید.
چگونه خطای اصلی را در گزارش پیدا کنیم؟
اول گزارش خطای هاست را ببینید. اگر کافی نبود، طبق راهنمای رسمی اشکالزدایی وردپرس، تنظیمات زیر را موقتاً در wp-config.php و پیش از بارگذاری wp-settings.php قرار دهید. اگر قبلاً تعریف شدهاند، همان مقدارها را ویرایش کنید:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
عملیات خطادار را یک بار تکرار کنید و wp-content/debug.log را ببینید. پس از بررسی، اشکالزدایی را خاموش کنید و گزارش را از دسترس عمومی خارج کنید؛ مسیر فایلها و اطلاعات احتمالی کاربران را در تیکت عمومی منتشر نکنید.
آموزش رفع خطای Memory Exhausted در وردپرس با wp-config.php
اگر میزبان اجازه تغییر حافظه در زمان اجرا را بدهد، میتوانید از ثابتهای وردپرس برای درخواست سقف بالاتر استفاده کنید. WP_MEMORY_LIMIT برای حافظه عمومی وردپرس است و WP_MAX_MEMORY_LIMIT در زمینههایی مانند مدیریت و پردازشهای خاص استفاده میشود. این دو تنظیم، محدودیت قفلشده سرور را دور نمیزنند؛ جزئیات تعامل آنها در مستندات تابع افزایش حافظه وردپرس مشخص است.
- در فایلمنیجر هاست، پوشه نصب وردپرس را باز کنید؛ همان پوشهای که wp-admin و wp-content در آن قرار دارند.
- فایل wp-config.php را پس از ذخیره نسخه قبلی باز کنید.
- نام ثابتهای حافظه را جستوجو کنید تا تعریف تکراری نسازید.
- اگر سقف فعلی پایینتر است و هاست اجازه میدهد، مقدار نمونه زیر را پیش از خط بارگذاری wp-settings.php قرار دهید؛ معمولاً قبل از عبارت پایان ویرایش تنظیمات.
define( ‘WP_MEMORY_LIMIT’, ‘256M’ );
define( ‘WP_MAX_MEMORY_LIMIT’, ‘256M’ );
این عدد نسخه ثابت برای همه سایتها نیست. اگر محدودیت فعلی از قبل 256M یا بیشتر است، تکرار همین مقدار ظرفیت بیشتری ایجاد نمیکند. محل قرارگیری ثابتها و محدودیت اختیار میزبان در راهنمای ویرایش wp-config.php توضیح داده شده است.
فایل را ذخیره و دقیقاً همان عملیات ناموفق را تکرار کنید. اگر سایت پس از ویرایش از دسترس خارج شد، ابتدا نسخه قبلی فایل را برگردانید؛ چند تغییر همزمان انجام ندهید.
برای انتخاب ابزار متناسب با کارتان، محصولات سون پلاگین را همراه با آموزش فارسی بررسی کنید؛ نصب افزونه بیشتر، جای تشخیص علت خطا را نمیگیرد.
اگر wp-config جواب نداد، حافظه PHP را از کجا تغییر دهیم؟
اگر عدد موجود در پیام خطای جدید تغییر نکرده، ممکن است تنظیم وردپرس اعمال نشده باشد یا میزبان اجازه افزایش نداده باشد. مسیر بعدی، تنظیم PHP مربوط به همان دامنه است. بین درخواست وردپرس و پیکربندی واقعی سرور تفاوت وجود دارد؛ راهنمای محیط میزبانی وردپرس این وابستگی را توضیح میدهد.
| روش | چه زمانی مناسب است؟ | نکته مهم |
|---|---|---|
| تنظیمات PHP در پنل هاست | وقتی امکان تغییر برای دامنه فراهم است | دامنه و نسخه PHP درست را انتخاب کنید |
| php.ini | وقتی به فایل پیکربندی مؤثر دسترسی دارید | ساخت فایل در یک پوشه تصادفی کافی نیست |
| .user.ini | در محیطهای پشتیبانیشده CGI و FastCGI | اعمال تغییر ممکن است با تأخیر همراه باشد |
| .htaccess | برای پیکربندی سازگار Apache و PHP | دستور php_value روش عمومی همه هاستها نیست |
طبق مستندات فایل پیکربندی PHP، فایل تنظیمات مؤثر به محیط اجرا وابسته است. در پنل هاست بهدنبال تنظیم memory_limit بگردید؛ نام و محل بخش مربوط به آن را از راهنمای میزبان بگیرید.
تنظیم در php.ini یا .user.ini
اگر میزبان این روش را تأیید کرده، مقدار نمونه زیر را در فایل تنظیمات مناسب قرار دهید:
memory_limit = 256M
براساس مستندات .user.ini، این فایل مخصوص CGI و FastCGI است و زمان بازخوانی پیشفرض آن ۳۰۰ ثانیه است. بنابراین بلافاصله پس از ذخیره، نتیجه را قطعی قضاوت نکنید؛ تنظیم میزبان ممکن است متفاوت باشد.
آیا ویرایش .htaccess پیشنهاد میشود؟
فقط با تأیید سازگاری سرور. دستور php_value memory_limit 256M به شرایط اجرای PHP بهصورت ماژول Apache و مجوزهای لازم وابسته است؛ این محدودیت در راهنمای تغییر تنظیمات PHP آمده است. اگر پس از افزودن آن خطای ۵۰۰ گرفتید، همان تغییر را برگردانید و با میزبان هماهنگ کنید.
چطور افزونه یا پردازش پرمصرف را پیدا کنیم؟
اگر خطا پس از افزایش مجاز حافظه ادامه دارد، بهجای بالابردن پیدرپی سقف، تغییرات اخیر را جداگانه آزمایش کنید. هدف این است که بفهمید کدام ترکیب از افزونه، قالب و عملیات مشکل ایجاد میکند. برای بازیابی دسترسی بدون پیشخوان، راهنمای عیبیابی وردپرس روش تغییر نام پوشه افزونهها را توضیح میدهد.
- در نسخه آزمایشی، افزونه تازهنصبشده یا تازهبهروزشده را غیرفعال و عملیات را تکرار کنید.
- اگر نتیجه روشن نبود، افزونههای عادی را غیرفعال کنید و مرحلهبهمرحله برگردانید.
- بدون دسترسی به پیشخوان، پوشه plugins را موقتاً به plugins.hold تغییر نام دهید و صفحه افزونهها را باز کنید.
- نام پوشه را به plugins برگردانید؛ سپس افزونهها را یکییکی فعال و آزمایش کنید.
- اگر مشکل باقی ماند، آزمایش قالب را روی نسخه آزمایشی و با رعایت وابستگیهای سایت انجام دهید.
این آزمایش را روی فروشگاه فعال بدون برنامه انجام ندهید؛ قطع موقت افزونههای پرداخت، عضویت یا ثبت سفارش میتواند خدمترسانی را مختل کند. برای آشنایی با مسیر فایلها، راهنمای مدیریت و نصب افزونه از طریق هاست مفید است.
سناریوی ملموس: درونریزی آگهیها
فرض کنید سایت آگهی شما عادی باز میشود، اما درونریزی گروهی آگهیها متوقف میشود. پیشنهاد عملی این است که همان فایل را روی نسخه آزمایشی به بخشهای کوچکتر تقسیم کنید و هر بخش را جداگانه اجرا کنید. نتیجه را همراه با محدودیت حافظه ثبت کنید تا پشتیبانی بتواند بین محدودیت ظرفیت و مشکل پردازش تمایز بگذارد.
اگر خطا هنگام انتقال سایت رخ میدهد، متن کامل گزارش نصب را بررسی کنید؛ هر شکست استخراجی ناشی از حافظه نیست. مسیر بررسی جداگانه در راهنمای خطاهای نصب بسته نصبی داپلیکیتور آمده است.
اشتباههای رایج چیست و چه زمانی باید به هاست تیکت بزنیم؟
افزایش حافظه زمانی نتیجه قابل اتکا دارد که عملیات قبلی موفق شود و خطای جدید تکرار نشود. اگر تنظیم اعمال نمیشود یا پردازش همچنان متوقف است، گزارش دقیق برای میزبان بفرستید. تغییر حافظه PHP بهتنهایی منابع فیزیکی تازهای به سرویس اضافه نمیکند و مجوز تغییر آن نیز تابع پیکربندی سرور است؛ مطابق راهنمای میزبانی وردپرس.
- memory_limit را روی -1 نگذارید؛ طبق مستندات PHP این مقدار محدودیت حافظه اسکریپت را حذف میکند، نه اینکه علت مصرف را اصلاح کند.
- چند فایل تنظیمات را همزمان تغییر ندهید؛ در این صورت تشخیص تنظیم مؤثر دشوار میشود.
- افزونهای را فقط بهدلیل دیدهشدن نامش در آخرین خط گزارش حذف نکنید؛ نتیجه آزمایش را هم در نظر بگیرید.
- برای رفع مشکل، فایلهای هسته وردپرس را ویرایش نکنید؛ تنظیمات را در محل مستندشده انجام دهید.
در تیکت هاست بنویسید: «در عملیات مشخصشده، خطای Allowed memory size exhausted رخ میدهد. زمان خطا، مقدار فعلی و متن گزارش پیوست است. لطفاً memory_limit مؤثر دامنه، امکان افزایش و محدودیت منابع سرویس را بررسی کنید.»
هزینه ارتقا بدون بررسی سرویس فعلی مشخص نیست. ابتدا از میزبان بخواهید علت محدودیت و گزینه متناسب را توضیح دهد؛ سپس درباره ارتقا تصمیم بگیرید.
پرسشهای پرتکرار
آیا افزایش حافظه به 256M همیشه مشکل را حل میکند؟
خیر؛ ممکن است تنظیم اعمال نشود یا علت مصرف همچنان باقی بماند. مستندات وردپرس نیز افزایش حافظه را جایگزین عیبیابی نمیداند.
تفاوت WP_MEMORY_LIMIT و WP_MAX_MEMORY_LIMIT چیست؟
اولی درخواست حافظه عمومی وردپرس است؛ دومی برای افزایش حافظه در زمینههای مشخص، مانند مدیریت، استفاده میشود. رفتار آن به زمینه اجرا و پذیرش تغییر توسط PHP وابسته است؛ جزئیات در مرجع رسمی وردپرس آمده است.
چرا بعد از تغییر wp-config عدد خطا عوض نمیشود؟
ممکن است ثابت را در محل نامناسب گذاشته باشید، فایل نصب دیگری را تغییر داده باشید یا میزبان افزایش را نپذیرد. محل تعریف را با راهنمای تنظیمات وردپرس تطبیق دهید و از میزبان مقدار مؤثر را بخواهید.
اگر پیشخوان باز نشود، چطور افزونهها را غیرفعال کنیم؟
از فایلمنیجر یا FTP، پوشه plugins را موقتاً تغییر نام دهید و صفحه افزونهها را باز کنید. سپس نام را برگردانید و افزونهها را جداگانه فعال کنید؛ مراحل در راهنمای بازیابی دسترسی وردپرس توضیح داده شده است.
چه زمانی رفع خطا را موفق بدانیم؟
وقتی همان عملیات ناموفق را دوباره انجام دادهاید، خروجی درست است و در گزارش تازه خطای مشابه ندارید. صرف بازشدن صفحه اصلی، معیار کافی برای موفقیت آزمایش شما نیست.
قدم بعدی در آموزش رفع خطای Memory Exhausted در وردپرس: راهنمای جامع و کاربردی، ثبت محدودیت فعلی و اجرای دوباره همان عملیات خطادار است؛ هر بار فقط یک تغییر بدهید. اگر مشکل به محصول خریداریشده از سون پلاگین مربوط است، گزارش بدون اطلاعات حساس را در تیکت حساب کاربری ارسال کنید؛ برای پیدا کردن مسیر ارتباطی، تماس باما و سوالات متداول را ببینید.
درباره وحید باقری
به عنوان کسی که عاشق دنیای وردپرس و کدنویسیه، هدفم اینه که دانش و تجربهام رو با شما به اشتراک بذارم. در "سون پلاگین"، تمرکزم روی ارائه آموزشهای کاربردی و مفید هست تا بهتون کمک کنم مسیر یادگیری رو راحتتر طی کنین. برای من، شما فقط یک بازدیدکننده نیستین؛ من شما رو "سروران گرامی" خودم میدونم و همیشه برای مشاوره و کمک بهتون آمادهام.
نوشته های بیشتر از وحید باقری

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