خطای 500 Internal Server Error – رفع ارور 500 سرور و وردپرس
ارور 500 سرور چیست و چرا رخ میدهد؟
خطای “500 Internal Server Error” یکی از عمومیترین و در عین حال آزاردهندهترین خطاهای وب است. این خطا به این معنی است که مشکلی در سمت سرور رخ داده، اما سرور نمیتواند به طور دقیق مشخص کند که این مشکل چیست. دلایل مختلفی، از یک کد اشتباه در فایل .htaccess
گرفته تا کمبود حافظه PHP یا تداخل افزونهها، میتواند باعث بروز این مشکل internal server error شود.
این راهنما به عنوان یک چکلیست جامع، شما را قدم به قدم در فرآیند عیبیابی و حل این مشکل در وردپرس هدایت میکند. برای عیبیابی این خطا، داشتن دسترسی به فایلها و تنظیمات سرور ضروری است که با خرید سرور مجازی این کنترل کامل در اختیار شما قرار میگیرد.
مهمترین قدم اول: مشاهده خطای واقعی (فعال کردن Debug Mode)
قبل از هر کاری، باید حالت عیبیابی (Debug) وردپرس را فعال کنید. این کار باعث میشود به جای دیدن یک صفحه سفید با خطای ۵۰۰، پیام خطای دقیقتری دریافت کنید که به شما میگوید مشکل دقیقا از کدام فایل یا افزونه است.
- از طریق فایل منیجر هاست، فایل
wp-config.php
در ریشه سایت خود را باز کنید. - خط زیر را در آن پیدا کنید:
define( 'WP_DEBUG', false );
- مقدار
false
را بهtrue
تغییر دهید و دو خط زیر را نیز به آن اضافه کنید:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
(این تنظیمات از نمایش خطاها به کاربران جلوگیری کرده و آنها را در یک فایل لاگ به نام
debug.log
در پوشهwp-content
ذخیره میکند). - فایل را ذخیره کرده و سایت خود را دوباره بارگذاری کنید. سپس فایل
debug.log
را بررسی کنید تا علت اصلی خطا را پیدا نمایید.
چکلیست عیبیابی قدم به قدم (از ساده به پیچیده)
اگر حالت Debug به شما سرنخ دقیقی نداد، موارد زیر را به ترتیب بررسی کنید.
۱. مشکل در فایل .htaccess
یک کد اشتباه یا تداخل در فایل .htaccess
یکی از شایعترین دلایل این خطاست.
راه حل:
- از طریق فایل منیجر، فایل
.htaccess
در ریشه سایت خود را پیدا کرده و نام آن را به.htaccess_old
تغییر دهید. - سایت خود را بررسی کنید. اگر مشکل حل شد، به این معنی است که فایل شما مشکل داشته است.
- به پیشخوان وردپرس رفته، وارد بخش تنظیمات > پیوندهای یکتا شوید و بدون هیچ تغییری، روی دکمه “ذخیره تغییرات” کلیک کنید. وردپرس به صورت خودکار یک فایل
.htaccess
جدید و سالم برای شما ایجاد خواهد کرد.
۲. تداخل افزونهها یا قالب
یک افزونه یا قالب که با نسخه وردپرس شما یا سایر افزونهها سازگار نیست، میتواند باعث بروز این خطا شود.
راه حل:
- از طریق فایل منیجر، به مسیر
/wp-content/
بروید. - نام پوشه
plugins
را به صورت موقت بهplugins_disabled
تغییر دهید. - سایت خود را بررسی کنید. اگر مشکل حل شد، مقصر یکی از افزونههاست. نام پوشه را به
plugins
برگردانید و سپس از پیشخوان وردپرس، افزونهها را یکییکی فعال کنید تا افزونه مشکلساز را پیدا کنید. - اگر با غیرفعال کردن افزونهها مشکل حل نشد، همین کار را برای قالب فعال فعلی خود نیز انجام دهید.
۳. کمبود حافظه PHP (Memory Limit)
اگر یک اسکریپت یا افزونه به حافظه بیشتری از آنچه سرور به آن اختصاص داده نیاز داشته باشد، این خطا رخ میدهد.
راه حل:
مقاله کامل ما در مورد حل خطای Allowed Memory Size Exhausted را دنبال کنید. به طور خلاصه، میتوانید با افزودن کد define('WP_MEMORY_LIMIT', '256M');
به فایل wp-config.php
این مشکل را برطرف کنید.
۴. نسخه ناسازگار یا قدیمی PHP
وردپرس و افزونههای مدرن برای عملکرد صحیح به نسخههای جدید PHP نیاز دارند. استفاده از نسخههای قدیمی میتواند باعث بروز ارور 500 سرور شود.
راه حل:
- از طریق کنترل پنل هاست خود (مانند cPanel یا DirectAdmin) و ابزار “MultiPHP Manager”، نسخه PHP سایت خود را به آخرین نسخه پایدار (مثلا 8.1 یا 8.2) ارتقا دهید.
۵. خرابی فایلهای هسته وردپرس
در موارد نادر، ممکن است برخی از فایلهای اصلی وردپرس آسیب دیده باشند.
راه حل:
- آخرین نسخه وردپرس را از سایت رسمی آن دانلود کنید.
- فایل را از حالت فشرده خارج کنید.
- پوشههای
/wp-admin/
و/wp-includes/
را از نسخه دانلودی، جایگزین پوشههای مشابه روی هاست خود کنید. (پوشهwp-content
و فایلwp-config.php
را دست نزنید).
عیبیابی پیشرفته: بررسی لاگهای سرور
اگر هیچکدام از روشهای بالا کار نکرد، باید مستقیما لاگهای خطای وبسرور خود را بررسی کنید. این سطح از دسترسی معمولا با خرید vps امکانپذیر است.
- برای وبسرور آپاچی: فایل لاگ معمولا در مسیر
/var/log/apache2/error.log
قرار دارد. - برای وبسرور Nginx: فایل لاگ معمولا در مسیر
/var/log/nginx/error.log
قرار دارد.
با بررسی این فایلها میتوانید پیام خطای دقیق PHP را که باعث بروز مشکل شده، پیدا کنید.
خطای ۵۰۰ در محیطهای محلی (XAMPP و لوکال هاست)
بسیاری از توسعهدهندگان هنگام کار با وردپرس روی کامپیوتر شخصی خود با این خطا مواجه میشوند. اگر شما با خطا در برقراری ارتباط با پایگاه داده در لوکال هاست یا خطا در برقراری ارتباط با پایگاه داده در xampp روبرو شدهاید، دلایل آن معمولا سادهتر هستند:
- خطای نحوی در
.htaccess
: نرمافزارهای لوکال هاست به کدهای .htaccess بسیار حساس هستند. یک دستور اشتباه میتواند فورا باعث خطای 500 شود. - پیکربندی آپاچی: مطمئن شوید که ماژول
mod_rewrite
در تنظیمات آپاچی XAMPP شما فعال است. - محدودیت منابع: گاهی اوقات تنظیمات پیشفرض PHP در XAMPP (مانند `max_execution_time`) برای اجرای برخی افزونههای سنگین کافی نیست.