خطای 500 هنگام ذخیره تغییرات در المنتور؛ آموزش رفع مشکل

یکی از خطاهایی که ممکن است هنگام کار با Elementor با آن مواجه شوید، نمایش خطای 500 Internal Server Error در زمان ذخیره تغییرات است. در این حالت ممکن است طراحی صفحه به‌درستی انجام شود، اما وقتی روی دکمه «به‌روزرسانی» یا «ذخیره» کلیک می‌کنید، عملیات ذخیره‌سازی انجام نشده و المنتور با خطای 500 مواجه شود.

خطای 500 به‌تنهایی مشخص نمی‌کند مشکل دقیقاً از کجاست و می‌تواند دلایل مختلفی داشته باشد؛ از محدودیت منابع و تنظیمات PHP گرفته تا خطاهای دیتابیس، افزونه‌ها، ModSecurity یا تنظیمات سرور.

با این حال، یکی از مواردی که در برخی سایت‌های وردپرسی، به‌خصوص سایت‌هایی که مدت زیادی فعال بوده‌اند و صفحات زیادی با Elementor ویرایش شده‌اند، می‌تواند مشکل‌ساز شود، تعداد زیاد Revisionهای وردپرس است.

در این شرایط، حذف Revisionهای قدیمی می‌تواند حجم اطلاعات اضافی دیتابیس را کاهش داده و در برخی موارد مشکل ذخیره‌سازی Elementor را برطرف کند.

Revision در وردپرس چیست؟

وردپرس هنگام ویرایش نوشته‌ها، برگه‌ها و برخی محتواها، نسخه‌های قبلی آنها را در دیتابیس نگهداری می‌کند. به این نسخه‌های قبلی Revision یا «بازبینی» گفته می‌شود.

برای مثال فرض کنید یک برگه را 100 بار ویرایش و ذخیره کرده باشید. وردپرس می‌تواند تعداد زیادی از نسخه‌های قبلی این برگه را نیز در دیتابیس نگهداری کند تا در صورت نیاز بتوانید به نسخه قبلی برگردید.

این قابلیت در حالت عادی مفید است، اما در سایت‌هایی که تعداد صفحات و دفعات ویرایش زیاد است، تعداد Revisionها ممکن است به هزاران یا حتی ده‌ها هزار رکورد برسد.

Elementor نیز به‌دلیل ماهیت صفحه‌ساز خود می‌تواند در فرایند ویرایش صفحات، اطلاعات قابل‌توجهی در دیتابیس ایجاد کند.

بنابراین اگر دیتابیس سایت حجم زیادی Revision داشته باشد، بررسی و پاک‌سازی این اطلاعات اضافی می‌تواند یکی از اقدامات مناسب برای رفع مشکل باشد.

آموزش اصلی: حذف Revisionهای وردپرس از دیتابیس

اگر به phpMyAdmin هاست دسترسی دارید، می‌توانید Revisionهای سایت را مستقیماً از دیتابیس حذف کنید.

مرحله اول: ورود به phpMyAdmin

ابتدا وارد کنترل‌پنل هاست خود، مانند cPanel یا DirectAdmin شوید.

مطابق با تصویر زیر در cPanel از بخش زیر می توانید وارد phpMyAdmin شوید:

Databases → phpMyAdmin

ورود به phpMyAdmin در سی پنل

پس از ورود، از ستون سمت چپ، دیتابیس مربوط به سایت وردپرسی خود را انتخاب کنید.

نکته: نام دیتابیس سایت خود را می توانید در فایل wp-config.php مشاهده کنید. این فایل در ریشه اصلی سایت قرار دارد.

دیتابیس سایت وردپرسی

بسیار مهم: قبل از اجرای هر Query روی دیتابیس، طبق تصویر زیر حتماً از دیتابیس سایت یک نسخه پشتیبان تهیه کنید. اجرای دستورات SQL روی دیتابیس بدون داشتن Backup می‌تواند در صورت انتخاب اشتباه دیتابیس یا Query، باعث حذف اطلاعات شود.

بکاپ گرفتن از دیتابیس در phpmyadmin

مرحله دوم: باز کردن بخش SQL

پس از انتخاب دیتابیس، از منوی بالای phpMyAdmin روی گزینه SQL کلیک کنید.

در این قسمت می‌توانید دستورات SQL را مستقیماً روی دیتابیس اجرا کنید.

مرحله سوم: اجرای Query

دستور زیر را وارد کنید:

DELETE FROM wp_posts WHERE post_type = ‘revision’;

سپس روی گزینه Go یا اجرا کلیک کنید.

این Query تمام رکوردهایی را که نوع آنها revision است از جدول wp_posts حذف می‌کند.

حذف revision از دیتابیس وردپرس

چرا جدول wp_posts؟

در وردپرس، اطلاعات مربوط به نوشته‌ها، برگه‌ها و بسیاری از انواع محتوای دیگر در جدول wp_posts ذخیره می‌شوند.

Revisionها نیز در همین جدول قرار می‌گیرند و نوع آنها با مقدار زیر مشخص می‌شود:

revision

بنابراین Query بالا به دیتابیس می‌گوید:

از جدول wp_posts، تمام رکوردهایی را که post_type آنها revision است حذف کن.

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

اگر پیشوند جدول wp_ متفاوت باشد چه کنیم؟

نکته مهم این است که همه سایت‌های وردپرسی از پیشوند wp_ استفاده نمی‌کنند.

برای مثال ممکن است جدول سایت شما به‌جای:

wp_posts

با نام زیر باشد:

abc_posts

یا:

site_posts

در این حالت نباید Query را با wp_posts اجرا کنید.

ابتدا در phpMyAdmin نام جدول مربوط به نوشته‌ها را پیدا کنید و Query را مطابق پیشوند واقعی دیتابیس تغییر دهید.

مثلاً اگر جدول شما:

abc_posts

است، Query باید به شکل زیر باشد:

DELETE FROM abc_posts WHERE post_type = ‘revision’;

برای پیدا کردن پیشوند جدول‌ها نیز می‌توانید فایل wp-config.php سایت را بررسی کنید. مقدار مربوط به $table_prefix پیشوند جداول وردپرس را مشخص می‌کند.

آیا اجرای این Query اطلاعات سایت را حذف می‌کند؟

این موضوع یکی از مهم‌ترین نکات قبل از اجرای دستور است.

Query زیر:

DELETE FROM wp_posts WHERE post_type = ‘revision’;

قرار نیست نوشته‌ها یا برگه‌های اصلی سایت را حذف کند؛ زیرا شرط Query فقط رکوردهایی را هدف قرار می‌دهد که مقدار post_type آنها برابر با revision باشد.

بنابراین مثلاً یک برگه عادی که نوع آن page است، تحت تأثیر این Query قرار نمی‌گیرد.

با این حال، Revisionها نیز بخشی از اطلاعات دیتابیس هستند و پس از حذف آنها امکان بازگردانی نسخه‌های قبلی محتوا از طریق قابلیت Revisions وردپرس وجود نخواهد داشت.

به همین دلیل توصیه می‌شود قبل از اجرای Query حتماً Backup داشته باشید.

بعد از اجرای Query چه اتفاقی می‌افتد؟

پس از اجرای موفق Query، phpMyAdmin معمولاً تعداد رکوردهای حذف‌شده را نمایش می‌دهد.

اگر سایت Revisionهای زیادی داشته باشد، ممکن است تعداد حذف‌شده‌ها قابل‌توجه باشد.

برای مثال ممکن است طبق تصویر  زیر نتیجه چیزی شبیه این باشد:

1875 rows deleted. (Query took 0.1215 seconds.)

این یعنی 1875 رکورد Revision از دیتابیس حذف شده است.

حذف Revision از دیتابیس وردپرس

پس از انجام این کار، وارد مدیریت وردپرس شوید و مجدداً صفحه موردنظر را با Elementor باز کنید.

تغییر کوچکی در صفحه ایجاد کنید و روی Update کلیک کنید.

اگر علت خطای 500، حجم بالای Revisionها یا فشار ایجادشده در فرایند ذخیره‌سازی بوده باشد، ممکن است مشکل در همین مرحله برطرف شده باشد.

روش ایمن‌تر برای حذف Revisionها

اگر به WP-CLI دسترسی دارید، می‌توانید Revisionها را از طریق خط فرمان وردپرس نیز حذف کنید.

برای مشاهده تعداد Revisionها:

wp post list –post_type=revision –format=count

و برای حذف آنها:

wp post delete $(wp post list –post_type=revision –format=ids) –force

این روش برای مدیران سرور و کاربران حرفه‌ای مناسب‌تر است؛ البته همچنان بهتر است قبل از حذف، Backup تهیه شود.

اگر با حذف Revision مشکل حل نشد چه کنیم؟

نکته مهم این است که خطای 500 در Elementor الزاماً به معنی مشکل Revision نیست.

اگر بعد از پاک‌سازی Revisionها همچنان هنگام ذخیره صفحه با خطای 500 مواجه می‌شوید، باید سایر عوامل مؤثر نیز بررسی شوند.

1. بررسی نسخه PHP

ابتدا نسخه PHP سایت را بررسی کنید.

Elementor و Elementor Pro برای اجرای صحیح به نسخه‌های مناسب PHP نیاز دارند. اگر نسخه PHP قدیمی باشد یا با افزونه‌ها و قالب سایت سازگاری نداشته باشد، ممکن است هنگام ذخیره صفحه خطای PHP ایجاد شود.

در کنترل‌پنل هاست، نسخه PHP را بررسی کرده و در صورت امکان از یک نسخه PHP پشتیبانی‌شده و سازگار با نسخه وردپرس، Elementor، قالب و سایر افزونه‌ها استفاده کنید.

2. افزایش Memory Limit وردپرس

Elementor هنگام ویرایش صفحات ممکن است نسبت به صفحات معمولی وردپرس حافظه بیشتری مصرف کند.

اگر Memory Limit پایین باشد، ممکن است فرآیند ذخیره‌سازی با خطای 500 متوقف شود.

مقدار WP_MEMORY_LIMIT و همچنین memory_limit مربوط به PHP را بررسی کنید.

برای نمونه، در بسیاری از سایت‌های Elementor تنظیماتی مانند:

memory_limit = 512M

یا بیشتر، بسته به حجم سایت و افزونه‌های فعال، می‌تواند مناسب باشد.

البته افزایش Memory Limit بدون بررسی لاگ‌ها همیشه راه‌حل اصلی نیست و بهتر است ابتدا مشخص شود آیا واقعاً محدودیت حافظه وجود دارد یا خیر.

3. بررسی Error Log

یکی از مهم‌ترین روش‌های پیدا کردن علت واقعی خطای 500، بررسی Error Log است.

خود عبارت:

500 Internal Server Error

اطلاعات دقیقی درباره علت خطا ارائه نمی‌کند.

ممکن است پشت این خطا مواردی مانند:

  • PHP Fatal Error
  • Allowed memory size exhausted
  • Maximum execution time exceeded
  • Database error
  • ModSecurity
  • Permission denied

وجود داشته باشد.

بنابراین اگر حذف Revision مشکل را برطرف نکرد، بررسی لاگ سرور و PHP می‌تواند علت اصلی را مشخص کند.

4. بررسی ModSecurity یا WAF

گاهی اوقات درخواست‌هایی که Elementor برای ذخیره اطلاعات صفحه ارسال می‌کند، توسط ModSecurity یا Web Application Firewall مسدود می‌شوند. در این حالت ممکن است کاربر در ظاهر فقط خطای 500 مشاهده کند، اما در لاگ ModSecurity مشخص باشد که یک Rule امنیتی درخواست Elementor را Block کرده است. اگر در Error Log یا لاگ ModSecurity مشخص شود که درخواست Elementor مسدود شده، باید همان Rule یا درخواست موردنظر بررسی شود؛ نه اینکه بدون دلیل کل فایروال غیرفعال شود.

5. بررسی افزونه‌ها و قالب

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

برای بررسی این موضوع می‌توانید افزونه‌های غیرضروری را موقتاً غیرفعال کرده و مجدداً ذخیره صفحه را تست کنید.

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

همین بررسی را می‌توان در صورت نیاز برای قالب نیز انجام داد؛ البته قبل از تغییر قالب در سایت اصلی، بهتر است تست در محیط آزمایشی انجام شود.

جمع‌بندی

خطای 500 هنگام ذخیره تغییرات Elementor یک خطای عمومی است و نمی‌توان بدون بررسی لاگ، علت آن را همیشه به یک عامل خاص نسبت داد. با این حال، در سایت‌هایی که مدت زیادی فعال بوده‌اند و تعداد زیادی صفحه یا نوشته در آنها ویرایش شده است، تعداد بالای Revisionها می‌تواند باعث افزایش حجم دیتابیس و ایجاد فشار اضافی در عملیات مرتبط با ذخیره محتوا شود.

یکی از اقداماتی که در چنین شرایطی می‌توان انجام داد، حذف Revisionهای اضافی با Query زیر است:

DELETE FROM wp_posts WHERE post_type = ‘revision’;

قبل از اجرای این Query باید حتماً از دیتابیس Backup تهیه شود و همچنین لازم است توجه داشته باشید که پیشوند جدول ممکن است در سایت شما wp_ نباشد.

اگر پس از حذف Revisionها مشکل همچنان وجود داشت، بررسی Error Log، نسخه PHP، Memory Limit، محدودیت‌های PHP، ModSecurity، افزونه‌ها، قالب و خطاهای دیتابیس باید در دستور کار قرار گیرد. به بیان ساده، حذف Revision یک راهکار مؤثر در شرایط مناسب است، اما نباید هر خطای 500 در Elementor را صرفاً به Revisionها نسبت داد؛ لاگ سرور معمولاً دقیق‌ترین مسیر برای شناسایی علت واقعی خطاست.

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

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

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