چرا امنیت سایت مهم است؟
۶ آذر ۱۳۹۵
طراحی سایت فروشگاه آموت صنعت
طراحی سایت فروشگاه آموت صنعت
۹ آذر ۱۳۹۵

حل مشکل Fatal error: Out of memory (allocated

حل مشکل Fatal error: Out of memory (allocated

آیا تا به حال با این ارور مواجه شده اید؟

Fatal error: Out of memory (allocated 142868480) (tried to allocate 18693772 bytes) in /… public_html/wp-admin/includes/nav-menu.php on line 948

ارورهای از این دست ( Fatal error: Out of memory ) در وردپرس بیشتر موید آن است که شما بیش از حد از حافظه php سایت استفاده کرده اید ، عموما این مشکل به دلیل وجود بیش از حد افزونه ها فعال وردپرس ایجاد می شود و باید مقدار مجاز استفاده از رم php در وردپرس را تغییر دهید ، رفع مشکل حافظه وردپرس راه حل های زیادی دارد:

۱- ویرایش فایل php.ini
این فایل عموما در مسیر روبرو قرار دارد : /usr/local/lib/php.ini . پس از باز کردن فایل به دنبال memory_limit = 8M بگردید و مقدار آن را به ۱۶ و یا ۳۲ افزایش دهید و آن را ذخیره نمایید.

۲- ویرایش فایل مورد نظر
در مواردی که نمیتوانید فایل php.ini را پیدا کنید و یا دسترسی به آن ندارید فایلی که ارور میدهد را باز کنید (در این مورد nav-menu.php ) و کد زیر را در پس از شروع کد php قرار دهید:

ini_set(’memory_limit’, ‘۱۲M’);

۳- ویرایش فایل wp-config.php
اما یکی از بهترین روش ها یک ویرایش ساده در فایل wp-config.php می باشد. برای رفع مشکل ابتدا به پنل هاست خود وارد شوید و در filemanager پوشه ( public_html ) را باز کنید و فایل wp-config.php خود را ویرایش کنید و در داخل تگ php کد زیر را قرار دهید :

define('WP_MEMORY_LIMIT', '64M');

یا

define('WP_MEMORY_LIMIT', '128M');

با درج این کد ها ما حافظه مجاز از رم php در وردپرس را به ۶۴ مگابایت و یا ۱۲۸ مگابایت افزایش داده ایم.

 

۴- ویرایش فایل .htaccess
شما همچنین می توانید به جای ویرایش  فایل wp-config.php ، فایل .htaccess را ویرایش نمایید. توجه داشته باشید که برای دیدن این فایل حتما باید قسمت نمایش فایل های hidden  در فایل منیجر هاست را فعال کرده باشید.
کافی است در این فایل کد زیر را قرار دهید :

php_value memory_limit 32M

اگر شما هنوز خطای حافظه وردپرس را دریافت می کنید با پشتیبان هاست خود تماس بگیرید ، به احتمال زیاد مشکل از محدودیت استفاده حافظه رم در فایل php.ini است و از آنها درخواست کنید تا مقدار حافظه را برای شما بیشتر کنند.

 

اما گاهی راه حل های فوق مشکل را برطرف نمیکند. و باز هم به آن بخش مورد نظر خود دسترسی نخواهید داشت.

 

به ارور زیر دقت کنید:

Fatal error: Out of memory (allocated 142868480) (tried to allocate 18693772 bytes) in /… public_html/wp-admin/includes/nav-menu.php on line 948

این ارور مربوط به فایل nav-menu.php  می باشد. یکی از راه های تجربی برای برطرف کردن این مشکل ، ویرایش دیتابیس می باشد که کمی نیاز به داشتن اطلاعات درباره برنامه نویسی می باشد . اما در این پست سعی می کنیم بصورت کمی ساده تر بگوییم این مشکل را چگونه حل نمایید.

وقتی یکی از فهرست های شما بیش از حد متغیر داشته باشد و یا تعداد کل لینکهای فهرست سایت شما از حدی بیشتر شود معمولا ارور فوق مشاهده می شود و هیچ کدام از راه حل های افزایش حافظه php جواب مشکل شما را نخواهد داد.

برای این کار بایستی به صورت دستی منو را از درون دیتابیس سایت ویرایش نمایید.
ابتدا وارد از طریق phpmyadmin وارد دیتا بیس سایت خود شوید.
فهرست ها در وردپرس در جدول wp_terms قرار دارند. برای مشاهده آنها در قسمت query دستور زیر را قرار دهید و آن را ران نمایید (go را بزنید)

SELECT *
FROM wp_terms AS t
LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
WHERE tt.taxonomy = 'nav_menu';

آیتم های فهرست در وردپرس به صورت custom post هستند. آنها در جدول wp_posts ذخیره می گردند. شما می توانید آنها را با اجرای کد زیر مشاهده نمایید:

SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';

با اجرای این دستور شما به لیست منو های خود در سایت دسترسی پیدا میکنید. برای ویرایش منوی مد نظر ID آن منو را یادداشت نمایید.

رابطه بین منو و شاخه های آن در جدول wp_term_relationships ذخیره می شوند . برای ویرایش منوی خاص مورد نظر دوباره در قسمت  query دستور زیر را اجرا نمایید. در قسمت مشخص شده ID فهرست مورد نظر را وارد نمایید.

SELECT p.*
FROM wp_posts AS p
LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE p.post_type = 'nav_menu_item'
AND tt.term_id = /*آی دی منو را وارد نمایید*/;

 

حال موارد مورد نظر را انتخاب نمایید و ویرایش کنید و یا فهرستی که باعث این خطا شده را بر اساس تعداد متغی هایش مشخص نمایید و آن را حذف نمایید تا مشکل شما برطرف گردد.

امیدوارم آموزش فوق مفید واقع شده باشد.

تجربیات خود را در بخش نظرات به دیگران به اشتراک بگذارید …

2 دیدگاه ها

  1. علی گفت:

    کد ها رو کجا باید اجرا کنیم توی دیتابیس؟
    کوئری نداره

پاسخ دهید

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

17 − 1 =