FA-TOOLS — Header Component

راهنمای جامع و گام‌به‌گام رفع خطای ۵۰۰ وردپرس (Internal Server Error)

فهرست مطالب

خلاصه سریع مقاله:

خطای ۵۰۰ یا Internal Server Error به دلیل عدم توانایی سرور در پردازش درخواست رخ می‌دهد. برای رفع آن، ابتدا حالت WP_DEBUG را فعال کنید تا خطای اصلی مشخص شود. سپس دلایل اصلی شامل خراب شدن فایل htaccess.، کمبود حافظه PHP، تداخل افزونه‌ها، یا به‌روزرسانی نادرست فایل‌های هسته وردپرس را به ترتیب تست و برطرف کنید.

مواجهه با خطای ۵۰۰ (Internal Server Error) در وردپرس می‌تواند بسیار نگران‌کننده باشد، چرا که این خطا تمام دسترسی به سایت را قطع کرده و پیام مشخصی درباره علت ایجاد مشکل ارائه نمی‌دهد. برخلاف خطاهای عمومی وب، خطای ۵۰۰ یک پاسخ کلی از سمت سرور است که نشان می‌دهد اختلالی در پردازش کدهای سایت پیش آمده اما سرور قادر به تشخیص دقیق آن نیست. در این مقاله، روش‌های عملی، گام‌به‌گام و تست‌شده برای عیب‌یابی و رفع کامل این خطا را بدون نیاز به دانش پیچیده برنامه‌نویسی بررسی می‌کنیم.

۱. خطای ۵۰۰ وردپرس چیست و چرا رخ می‌دهد؟

پاسخ کوتاه: خطای ۵۰۰ یا Internal Server Error یک کد وضعیت HTTP است که نشان می‌دهد سرور هنگام تلاش برای بارگذاری صفحه با یک اختلال غیرمنتظره مواجه شده است. اصلی‌ترین علل بروز این خطا در وردپرس شامل آسیب دیدن فایل htaccess.، اتمام سقف حافظه اختصاص یافته به PHP، کدهای مخرب یا متداخل در افزونه‌ها و قالب‌ها، و ناهمخوانی نسخه PHP سرور است.

زمانی که مرورگر درخواستی را به سرور ارسال می‌کند، سرور کدهای PHP وردپرس را اجرا کرده و خروجی HTML را تحویل می‌دهد. اگر در طی این مسیر پردازش، کدی دچار بن‌بست اجرایی شود، سرور پردازش را متوقف کرده و خطای کد ۵۰۰ را بازمی‌گرداند. از آنجا که این خطا کلی است، باید فرآیند عیب‌یابی را از ساده‌ترین و شایع‌ترین علل شروع کنیم.

۲. اقدام ضروری پیش از هرگونه تغییر (پشتیبان‌گیری)

پیش از دستکاری فایل‌های سیستم یا تغییر تنظیمات هاست، حتماً یک نسخه پشتیبان (Backup) از فایل‌ها و پایگاه داده سایت تهیه کنید. حتی اگر به پیشخوان وردپرس دسترسی ندارید، می‌توانید از طریق پنل مدیریت هاست (cPanel یا DirectAdmin) یا پروتکل FTP، تمام پوشه `public_html` و دیتابیس را دانلود کنید تا در صورت بروز هرگونه اشتباه، امکان بازگردانی سریع وجود داشته باشد.

۳. فعال‌سازی حالت اشکال‌زدایی (WP_DEBUG) برای کشف علت دقیق

پاسخ کوتاه: فعال کردن WP_DEBUG به جای نمایش یک صفحه سفید یا خطای کلی ۵۰۰، متن دقیق خطای PHP و فایلی که دچار مشکل شده را روی صفحه یا در یک فایل لاگ (debug.log) نمایش می‌دهد تا منشأ اصلی مشکل مشخص شود.

برای فعال‌سازی این قابلیت، مراحل زیر را طی کنید:

  1. وارد کنترل پنل هاست (cPanel یا DirectAdmin) شوید و به بخش File Manager بروید.
  2. پوشه اصلی سایت (معمولاً `public_html`) را باز کنید.
  3. فایل wp-config.php را پیدا کرده و آن را جهت ویرایش باز کنید.
  4. خط define('WP_DEBUG', false); را پیدا کرده و آن را به کد زیر تغییر دهید:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

با این کار، خطاهای سایت روی صفحه اصلی برای بازدیدکنندگان نمایش داده نمی‌شود، اما یک فایل به نام debug.log در پوشه wp-content ایجاد می‌شود. با بررسی این فایل، می‌توانید افزونه یا فایلی که باعث بروز خطای ۵۰۰ شده را دقیقاً شناسایی کنید. اگر نیاز به تنظیمات پیشرفته‌تر در ساختار فایل‌های وردپرس دارید، بررسی قطعه کدهای کاربردی وردپرس به شما در مدیریت بهتر فایل کانفیگ کمک خواهد کرد.

۴. بررسی و بازسازی فایل htaccess.

خرابی یا دستکاری اشتباه در فایل .htaccess شایع‌ترین دلیل خطای ۵۰۰ است. این فایل وظیفه مدیریت پیوندهای یکتا، تغییر مسیرها (Redirects) و سطوح دسترسی سرور وب آپاچی یا لایت‌اسپید را بر عهده دارد.

  • وارد File Manager هاست شده و فایل .htaccess در ریشه اصلی (`public_html`) را پیدا کنید. (اگر فایل را نمی‌بینید، گزینه Show Hidden Files را در تنظیمات هاست فعال کنید).
  • نام فایل را به .htaccess_old تغییر دهید.
  • سایت را مجدداً بارگذاری کنید. اگر مشکل حل شد، به پیشخوان وردپرس رفته، به مسیر تنظیمات > پیوندهای یکتا بروید و بدون هیچ تغییری روی دکمه “ذخیره تغییرات” کلیک کنید تا فایل جدید و استاندارد ساخته شود.

کد پیش‌فرض فایل htaccess. برای وردپرس به شکل زیر است:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

۵. افزایش میزان حافظه نمایه شده PHP (PHP Memory Limit)

پاسخ کوتاه: اگر یک افزونه یا اسکریپت به حافظه‌ای بیش از میزان مجاز هاست نیاز داشته باشد، اجرای آن نیمه‌کاره رها شده و خطای ۵۰۰ صادر می‌شود. افزایش محدودیت حافظه PHP در فایل wp-config.php یا php.ini این مشکل را برطرف می‌کند.

برای افزایش میزان حافظه، فایل wp-config.php را ویرایش کرده و کد زیر را درست قبل از عبارت /* That's all, stop editing! Happy publishing. */ قرار دهید:

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

در صورتی که این تغییر اثرگذار نبود، می‌توانید با ساخت یا ویرایش فایل php.ini در پوشه root هاست، مقادیر زیر را درج کنید:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

۶. شناسایی و غیرفعال‌سازی افزونه‌ها و قالب‌های متداخل

کدهای ناهماهنگ، کدهای منسوخ‌شده بعد از به‌روزرسانی یا تداخل دو افزونه با یکدیگر از دلایل عمده خطای ۵۰۰ هستند. اگر به پیشخوان دسترسی ندارید، تست غیرفعال‌سازی از طریق هاست انجام می‌شود.

روش غیرفعال‌سازی یکباره افزونه‌ها:

  1. به مسیر wp-content در File Manager بروید.
  2. پوشه plugins را پیدا کرده و نام آن را به plugins_old تغییر دهید.
  3. سایت را چک کنید. اگر خطای ۵۰۰ رفع شد، مشکل قطعاً از یکی از افزونه‌هاست.
  4. نام پوشه را به plugins بازگردانید و سپس وارد پوشه شده و پوشه هر افزونه را تک‌تک تغییر نام دهید تا افزونه خراب مشخص شود.

بررسی تداخل قالب:

پوشه قالب فعال خود را در مسیر wp-content/themes تغییر نام دهید تا وردپرس به صورت خودکار قالب پیش‌فرض (مانند Twenty Twenty-Three) را فعال کند. اگر سایت بالا آمد، قالب شما دارای خطای کدنويسی است.

۷. اصلاح سطح دسترسی فایل‌ها و پوشه‌ها (File Permissions)

پاسخ کوتاه: سطح دسترسی نادست فایل‌ها به سرور اجازه خواندن یا اجرای کدها را نمی‌دهد. استاندارد دسترسی در وردپرس برابر با 755 برای همه پوشه‌ها و 644 برای همه فایل‌ها است.

اگر سطح دسترسی فایلی روی 777 تنظیم شده باشد، سیستم‌های امنیتی سرور (مانند suPHP) به دلایل امنیتی اجرای آن را مسدود کرده و خطای ۵۰۰ صادر می‌کنند. از طریق نرم‌افزار FileZilla یا File Manager هاست، سطح دسترسی تمام پوشه‌ها را روی 755 و تمام فایل‌ها را روی 644 تنظیم کنید.

۸. جایگزینی فایل‌های هسته وردپرس (Core Files)

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

  1. آخرین نسخه وردپرس را از سایت رسمی دانلود کرده و آن را از حالت فشرده خارج کنید.
  2. پوشه wp-content را از داخل بسته دانلود شده **حذف کنید** (تا اطلاعات شما آسیب نبیند).
  3. محتویات باقی‌مانده (به ویژه پوشه‌های wp-admin و wp-includes) را روی هاست خود آپلود و جایگزین (Overwrite) کنید.

۹. جدول مقایسه‌ای دلایل و راه‌حل‌های سریع خطای ۵۰۰

علت و نشانه احتمال اقدام و راه‌حل سریع
خرابی دستورات htaccess. (رایج‌ترین) تغییر نام فایل به htaccess_old. و ذخیره مجدد پیوندهای یکتا در وردپرس
اتمام حافظه PHP اختصاص یافته افزودن دستور WP_MEMORY_LIMIT به ۲۵۶M در فایل wp-config.php
تداخل کدهای یک افزونه تازه نصب‌شده تغییر نام پوشه plugins در مسیر wp-content به منظور غیرفعال‌سازی همگانی
سطح دسترسی ناامن فایل‌ها (مثلاً 777) تنظیم سطح دسترسی پوشه‌ها روی 755 و فایل‌ها روی 644
عدم همخوانی نسخه PHP سرور با قالب/افزونه ارتقا یا تنزل نسخه PHP از طریق Select PHP Version در cPanel (توصیه: PHP 8.1 یا 8.2)

۱۰. پرسش‌های متداول

آیا خطای ۵۰۰ وردپرس به سئوی سایت آسیب می‌زند؟

اگر خطا ظرف چند ساعت برطرف شود، هیچ تاثیر منفی متوجه سئو نخواهد شد. اما اگر ربات‌های گوگل برای چند روز با خطای ۵۰۰ مواجه شوند، رتبه‌های سایت به شدت افت خواهد کرد.

چرا خطای ۵۰۰ فقط در بخش مدیریت (wp-admin) رخ می‌دهد؟

این اتفاق معمولاً به دلیل کمبود حافظه PHP در بخش مدیریت یا تداخل افزونه‌ای است که کدهای خود را فقط در پنل ادمین اجرا می‌کند. افزایش حافظه PHP مشکل را برطرف می‌کند.

اگر هیچ‌یک از راه‌حل‌ها پاسخ نداد چه باید کرد؟

در این حالت مشکل به احتمال زیاد از سوی سخت‌افزار یا کانفیگ سرور هاستینگ است. باید با پشتیبانی هاست تماس بگیرید تا لاگ‌های اصلی سرور (Error Log) را بررسی کنند.

تفاوت خطای ۵۰۰ با خطای ۵۰۲ و ۵۰۴ چیست؟

خطای ۵۰۰ مربوط به مشکل درون‌برنامه‌ای سرور شماست. اما خطای ۵۰۲ و ۵۰۴ مربوط به عدم پاسخ‌گویی سرورهای میانجی (مانند Cloudflare یا Nginx Reverse Proxy) است.

۱۱. عیب‌یابی سریع سناریوهای خاص

سناریوی ۱: رخ دادن خطای ۵۰۰ بلافاصله پس از آپلود عکس یا فایل

علت: کمبود حافظه در کتابخانه پردازش تصویر (Imagick یا GD) یا محدودیت حجم آپلود.
راه‌حل: مقدار upload_max_filesize را در php.ini افزایش دهید یا افزونه‌های بهینه‌سازی تصویر متداخل را غیرفعال کنید.

سناریوی ۲: بروز خطا بلافاصله پس از ارتقای نسخه PHP هاست

علت: عدم پشتیبانی یکی از افزونه‌ها یا قالب‌های قدیمی از نسخه جدید PHP.
راه‌حل: نسخه PHP را موقتاً به حالت قبل (مثلاً 7.4) بازگردانید، تمام افزونه‌ها را آپدیت کرده و سپس نسخه PHP را مجدداً ارتقا دهید.

سناریوی ۳: ایجاد خطا پس از نصب یا فعال‌سازی SSL (HTTPS)

علت: کدهای حلقه ریدایرکت بی‌نهایت (Infinite Redirect Loop) در فایل htaccess..
راه‌حل: دستورات اضافه ریدایرکت را از htaccess. پاک کرده و از افزونه‌های استاندارد برای تنظیم HTTPS استفاده کنید.

Table of Contents

آخرین نوشته‌ها

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

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