یکی از ارورهای رایج در وردپرس، ارور “Allowed memory size” است. این ارور معمولاً در وب سایت های سنگین و پر بازدیدی که از سرویس های هاستینگ مشترک استفاده می کنند، مشاهده می شود. معنی این خطا این است که PHP از سقف مجاز حافظه خود استفاده کرده و حالا برای ادامه کار نیاز به حافظه بیشتری دارد. یکی از دلایل اصلی این ارور این است که وردپرس در تعداد افزونه های نصبی برای کاربران محدودیتی ندارد. بنابراین ممکن است در مواردی با نصب افزونه های بیش از حد توسط کاربر، حافظه در دسترس وردپرس اشباع شود. اگر شما هم با این خطا در وردپرس خود رو به رو شده اید، در این آموزش از ژاکت همراه ما باشید. در ادامه ابتدا دلیل وقوع این خطا را بررسی می کنیم. سپس 4 روش آسان و سریع برای رفع خطای Allowed memory size را به طور کامل آموزش می دهیم.
پیشنهاد می کنیم با 50 خطای متداول وردپرس و روش حل آنها آشنا شوید.
دلیل وقوع خطای Allowed memory size
وردپرس با استفاده از زبان برنامه نویسی php که یک زبان برنامه نویسی سمت سرور است، طراحی شده است. هر وب سایتی به یک سرور هاست وردپرسی برای انجام عملیات های مربوطه نیاز دارد. بنابراین در سیستم وردپرس، افزونه ها و قالب ها و هر چیزی که برای اجرای سایت لازم است، توسط PHP اجرا می شوند. PHP نیز برای اجرای این فایل ها و کدها، از منابع سرور استفاده می کند.
از طرفی وب سرورها همانند کامپیوترها برای اینکه بتوانند همزمان چندین نرم افزار را در کنار همدیگر اجرا کنند و بدون اختلال عملیات های مربوط به هر نرم افزار را انجام دهند نیاز به مموری دارند. برنامه نویسان برای هر نرم افزاری مانند php که داخل سرور اجرا می شود مقدار مشخصی مموری اختصاص می دهند.
بنابراین سرور نیز بنا به سقف تعیین شده توسط برنامه نویس و به منظور جلوگیری از بعضی از مشکلات احتمالی، به PHP اجازه دسترسی به همان محدوده از حافظه را می دهد. به همین جهت نیز هنگاهی که وردپرس به فضای پردازش بیشتر از حدی که در سیستم تعریف شده نیاز داشته باشد شما با این ارور موجه می شوید:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2348617 bytes) in /home4/xxx/public_html/wp-includes/plugin.php on line xxx
در حالت پیش فرض اگر حافظه تعیین شده برای php کمتر از 64 مگابایت باشد وردپرس به صورت خودکار اقدام به افزایش آن می کند هر چند مقدار 64 مگابایت هم کافی نیست.
در ادامه به شما توضیح خواهیم داد که چگونه می توانید با افزایش حافظه اختصاصی PHP و همینطور روش های دیگر این خطا را برطرف کنید.
نحوه رفع خطای Allowed memory size
اگر با چنین خطایی مواجه شدید، اصلاً نگران نباشید! چرا که برطرف کردن این ارور بسیار راحت است و فقط با چند کلیک می توانید این خطا را از بین ببرید. در ادامه به 4 روش برای رفع این خطا اشاره می کنیم. لازم به ذکر است که ترجیح بر استفاده از روش اول است. اما چنانچه این روش برای رفع خطای Allowed memory size پاسخگو نبود، می توانید روش های بعدی را امتحان کنید.
روش اول: افزایش حافظه پردازش php در وردپرس
همانطور که اشاره کردیم، دلیل اصلی بروز این ارور این است که حافظه اختصاصی PHP پر شده است. طبیعتاً اولین و راحت ترین روش برای رفع خطای Allowed memory size، این است که حافظه اختصاص داده به PHP را به صورت دستی افزایش دهیم. در ابتدای کار نیاز است که شما فایل (wp-config.php) که در پوشه رووت (root folder) سایت وردپرسی تان قرار دارد را ویرایش کنید.
مرحله اول
شما باید با استفاده از FTP Client یا فایل منیجری که در هاست شما قرار دارد به این فایل دسترسی پیدا کنید و آن را برای ویرایش باز کنید. در اینجا نحوه دسترسی به فایل منیجر وردپرس را مرور می کنیم.
برای این کار ابتدا وارد CPanel خود شوید (برای دسترسی به CPanel می توانید عبارت cpanel را انتهای نام دامنه خود در نوار مرور گر تایپ کنید؛ مثل: yourwebsite.com/cpanel). اطلاعاتی که برای ورود به CPanel نیاز دارید، در ایمیلی که از طرف شرکت هاستینگ برایتان ارسال شده، موجود است.
بعد از ورود به CPanel، بخش File Manager را باز کرده و بعد فولدر Public.html را انتخاب کنید. سپس در این فولدر فایل wp-config.ph را پیدا کنید. سپس روی آن راست کلیک کرده و Edit را انتخاب کنید.
مرحله دوم
در این فایل، متنی به این صورت مشاهده خواهید کرد:
/* That's all, stop editing! Happy publishing. */
در این مرحله نیاز است که قطعه کد زیر را درست قبل از این خط بنویسید یا با کپی کردن آن را به خط مورد نظر انتقال دهید:
define ('WP_MEMORY_LIMIT', '256M');
این کد به وردپرس می گوید که حافظه php را به مقدار 256 مگابایت برساند.
مرحله سوم
حال نیاز دارید تغییراتی که اعمال کرده اید را ذخیره کنید و به وبسایت تان برگردید. در این مرحله باید هنگام بازدید از سایت، خطای Allowed memory size ناپدید شده باشد.
اختصاص حافظه بیشتر به ادمین داشبورد
اگر کد بالا را وارد کردید، اما باز هم خطای مشابه را دریافت کردید، می توانید تکه کد دیگری را به منظور افزایش حافظه مربوط به ادمین داشبورد وارد کنید. برای این کار در همان فایل wp-config.php تکه کد زیر را در کنار کد بالا وارد کنید:
define ('WP_MAX_MEMORY_LIMIT', '384M');
چه مقداری از حافظه را به PHP اختصاص دهیم؟
در رفع خطای Allowed memory size به این روش، شاید این سؤال را داشته باشید که آیا همیشه باید همان 265 مگابایت را به PHP اختصاص دهیم؟ خیر؛ این عدد در شرایط مختلف می تواند متغیر باشد. در ادامه به راهنمای انتخاب بهترین عدد برای محدوده حافظه PHP اشاره می کنیم تا در هر شرایطی بتوانید عدد مناسب را برای حافظه اختصاص PHP وارد کنید.
متن ارور کمبود حافظه به این ترتیب است: “Fatal error: Allowed memory size of x bytes exhausted”. “x” در این عبارت به مقادیری از بایت ها اشاره می کند. نکته اینجاست که می توانید حافظه جدید اختصاصی PHP را طبق این عدد تعیین کنید.
به راهنمای زیر نگاه کنید. اگر پیام سمت چپ را برای خطای کمبود حافظه مشاهده کردید، مقدار سمت راست را در قطعه کد بالا به جای “265M” وارد کنید:
- PHP: Fatal Error: Allowed Memory Size of 8388608Bytes Exhausted – 8 MB
- PHP: Fatal Error: Allowed Memory Size of 16777216Bytes Exhausted – 16 MB
- PHP: Fatal Error: Allowed Memory Size of 33554432Bytes Exhausted – 32 MB
- PHP: Fatal Error: Allowed Memory Size of 67108864Bytes Exhausted – 64 MB
- PHP: Fatal Error: Allowed Memory Size of 134217728Bytes Exhausted – 128 MB
- PHP: Fatal Error: Allowed Memory Size of 268435456Bytes Exhausted – 256 MB
- PHP: Fatal Error: Allowed Memory Size of 536870912Bytes Exhausted – 512 MB
- PHP: Fatal Error: Allowed Memory Size of 1073741824Bytes Exhausted – 1 GB
نکته مهم در اختصاص حافظه به PHP
دقت کنید که تا جای ممکن نباید حافظه را بیش از حد به PHP اختصاص دهید. چرا که همانطور که بالاتر نیز اشاره کردیم، این محدوده برای PHP تعیین می شود تا از بروز مشکلاتی که هنگام اجرای هم زمان برنامه ها روی می دهند جلوگیری شود. بنابراین این که به PHP مقداری را بیشتر از حد نیاز آن اختصاص دهیم نه تنها یک اقدام مثبت نیست؛ بلکه ممکن است برای سیستم مشکلاتی را به همراه داشته باشد.
روش دوم: حذف یا غیر فعال کردن افزونه ها
همانطور که ابتدای آموزش نیز اشاره کردیم، از مهم ترین عوامل بروز این خطا، نصب افزونه های زیاد است. در نتیجه اگر روش قبل اثربخش نباشد، می توانید برای رفع خطای Allowed memory size به سراغ حذف یا غیر فعال کردن بعضی از افزونه ها بروید.
بنابراین به بخش افزونه های سایت خود بروید و افزونه هایی را که چندان برای سایتتان ضرورتی ندارند را حذف یا فقط غیر فعال کنید. با این کار بخشی از حافظه سرور خالی می شود. به همین جهت نیز علاوه بر برطرف شدن خطای کمبود حافظه، سرعت لود شدن سایت نیز افزایش خواهد یافت.
روی سوم: بهینه سازی وردپرس
اگر به همه افزونه های خود نیاز دارید و افزونه ای نیست که بتوانید آن را حذف کنید، می توانید روش سوم را امتحان کنید. در این روش باید تنظیمات افزونه های خود را بررسی کرده و تا جای ممکن آنها را بهینه کنید. با این کار می توانید از پردازش های سنگین در سایت خود جلوگیری کنید.
نکته : استفاده از آخرین نسخه PHP نیز می تواند وردپرس را تا حد زیادی بهینه کند. بنابراین چنانچه نسخه جدیدتری برای PHP در وردپرس شما موجود است، PHP را به روزرسانی کنید.
روش چهارم: به شرکت هاستینگ خود اطلاع دهید
در اکثر موارد یکی از روش های بالا مشکل را برطرف خواهد کرد. اما اگر همچنان با ارور تحلیل رفتن حافظه وردپرسی مواجه می شوید به این معنا است که سرور میزبانی تان (hosting service) شما را در افزایش دادن حافظه php محدود کرده است، برای حل این مشکل نیاز است که با تیم پشتیبانی شرکتی که از آن هاست را خریده اید تماس بگیرید و درخواست افزایش حافظه php بدهید. و در صورت لزوم به فکر انتقال سایت به هاست جدید باشید.
در این مطلب سعی کردیم به معرفی یکی از خطاهای رایج وردپرس و روش برطرف کردن آن بپردازیم. اگر این آموزش برایتان مفید بوده، ما را مطلع کنید و اگر سوال یا مشکلی دارید در این خصوص دارید، در نظرات حتما با ما درمیان بگذارید.
نویسنده سینا عباسی
سایر مقالات نویسندهسینا عباسی، مدیر سئو ژاکت، بیش از 7 ساله که بهصورت تخصصی در حوزه سئو فعالیت میکند. وی مدرس و مشاور سئوی کسب و کارهای اینترنتی میباشد. سینا عباسی با تخصص و تجربهای که در حوزه سئو دارد، نگاه شما را به آموزش سئو در دنیای دیجیتال مارکتینگ تغییر میدهد.
چقدر عالی بود این مقاله، چندین روز درگیرش بودم کل اطلاعات سایتمو چندین پاک کردم قالب ها رو پاک کردم .با روش شما به کلی درست شد . خیلی ساده بیانش کردین .مشخصه که یه عمر تجربه پشتش این مقالتون هست . بازم ممنونم
عالی مشکل حل شد بالای چند روز درگیر این موضوع بودم ممنون