ارور 500 یا Internal Server Error یکی از خطاهای سمت سرور است که نشان میدهد سرور هنگام پردازش درخواست با مشکلی غیرمنتظره مواجه شده و نتوانسته صفحه را بهدرستی نمایش دهد.
این خطا برخلاف خطای 404 معمولاً ارتباطی با اشتباه بودن آدرس صفحه ندارد. ممکن است فایل پیکربندی سرور خراب شده باشد، یک افزونه یا قالب خطای برنامهنویسی ایجاد کند، حافظه PHP تمام شود یا دسترسی فایلها بهدرستی تنظیم نشده باشد.
پیام 500 بهتنهایی علت دقیق مشکل را نشان نمیدهد. برای رفع آن باید زمان شروع خطا، آخرین تغییرات سایت و گزارشهای ثبتشده در سرور بررسی شوند.
در این مقاله توضیح میدهیم ارور 500 چیست، چه دلایلی دارد، چگونه منبع آن را پیدا کنیم و برای رفع خطای 500 در سایتهای وردپرسی و اختصاصی چه اقداماتی انجام دهیم.
ارور 500 چیست؟
کد 500 Internal Server Error یک پاسخ عمومی در گروه خطاهای 5xx است. سرور زمانی این کد را ارسال میکند که با شرایط پیشبینینشدهای مواجه شده و نتواند پاسخ مناسبتری برای مشکل انتخاب کند.
به زبان ساده، درخواست کاربر به سرور رسیده است؛ اما سرور هنگام اجرای برنامه یا آمادهسازی پاسخ دچار مشکل شده است. خطای کدنویسی، کمبود حافظه، پیکربندی اشتباه، سطح دسترسی نامناسب و خطای پردازش از دلایل احتمالی هستند.
این خطا ممکن است در یکی از حالتهای زیر مشاهده شود:
- تمام صفحات سایت خطای 500 نشان دهند.
- فقط یک صفحه یا بخش مشخص دچار خطا شود.
- خطا فقط در پنل مدیریت نمایش داده شود.
- خطا هنگام ثبت سفارش یا ارسال فرم رخ دهد.
- خطا بهصورت موقت و در ساعات پرترافیک ایجاد شود.
- درخواستهای API خطای 500 دریافت کنند.
- سایت صفحه سفید نمایش دهد اما کد پاسخ 500 باشد.
پیام ارور 500 چگونه نمایش داده میشود؟
ظاهر خطا به وبسرور، سیستم مدیریت محتوا و تنظیمات سایت بستگی دارد. برخی از پیامهای رایج عبارتاند از:
500 Internal Server Error
HTTP Error 500
Internal Server Error
The server encountered an internal error
This page isn't working
The website is currently unable to handle this request
There has been a critical error on this website
ممکن است صفحه هیچ متن مشخصی نمایش ندهد و فقط سفید باشد. برای اطمینان باید وضعیت HTTP با ابزارهای فنی بررسی شود.
تفاوت ارور 500 با خطاهای دیگر چیست؟
| کد وضعیت | مفهوم | علت متداول |
|---|---|---|
| 404 | صفحه پیدا نشد | حذف یا اشتباه بودن URL |
| 403 | دسترسی ممنوع | محدودیت دسترسی یا مجوز فایل |
| 500 | خطای داخلی سرور | مشکل عمومی در برنامه یا پیکربندی |
| 502 | پاسخ نامعتبر از سرور بالادستی | مشکل پراکسی، PHP-FPM یا سرور دیگر |
| 503 | سرویس موقتاً در دسترس نیست | تعمیرات، فشار یا محدودیت منابع |
| 504 | پایان زمان انتظار در Gateway | دیر پاسخ دادن سرور بالادستی |
در مقاله ارور 404 دلایل پیدا نشدن صفحات و روش مدیریت URLهای حذفشده توضیح داده شده است. برخلاف 404، خطای 500 معمولاً نشان میدهد صفحه ممکن است وجود داشته باشد اما سرور قادر به پردازش آن نیست.
ارور 500 سمت کاربر است یا سرور؟
خطای 500 در گروه خطاهای سمت سرور قرار دارد. بنابراین علت اصلی معمولاً باید توسط مدیر سایت، برنامهنویس یا شرکت میزبانی بررسی شود.
کاربر عادی میتواند اقدامات سادهای مانند بارگذاری مجدد صفحه، پاک کردن کش مرورگر یا آزمایش سایت با اینترنت دیگری انجام دهد؛ اما اگر سرور واقعاً وضعیت 500 برگرداند، تغییر مرورگر معمولاً مشکل اصلی را برطرف نمیکند.
در یک پروژه حرفهای طراحی سایت، باید سیستم ثبت خطا و مانیتورینگ در نظر گرفته شود تا مدیر سایت برای اطلاع از خطاهای مهم فقط به گزارش کاربران وابسته نباشد.
مهمترین دلایل ایجاد ارور 500
۱. خطای کدنویسی
یک خطای برنامهنویسی میتواند اجرای صفحه را متوقف کند. نمونههای رایج عبارتاند از:
- خطای Syntax در PHP
- فراخوانی تابع تعریفنشده
- استفاده از متغیر یا کلاس نامعتبر
- Exception مدیریتنشده
- خطا در اتصال یک ماژول
- ارسال داده با ساختار غیرمنتظره
- تقسیم بر صفر یا پردازش نامعتبر
- حلقه یا بازگشت بینهایت
- خطای مربوط به نوع دادهها
- استفاده از قابلیت ناسازگار با نسخه زبان
در سایتهای اختصاصی، لاگ برنامه باید مسیر فایل، شماره خط و نوع خطا را مشخص کند.
۲. خراب شدن فایل .htaccess
در سرورهای Apache یا سرویسهای سازگار، فایل .htaccess میتواند قوانین بازنویسی، ریدایرکت، کش و دسترسی را مدیریت کند.
وجود یک دستور اشتباه، استفاده از تنظیم پشتیبانینشده یا ایجاد حلقه در قوانین Rewrite ممکن است باعث ارور 500 شود.
این مشکل گاهی پس از موارد زیر ایجاد میشود:
- ویرایش دستی فایل
- نصب افزونه امنیتی یا کش
- تغییر نسخه PHP
- انتقال سایت
- اضافه کردن کد از منابع نامعتبر
- تداخل قوانین چند افزونه
۳. ناسازگاری افزونههای وردپرس
افزونه ممکن است با نسخه وردپرس، PHP، قالب یا افزونه دیگری سازگار نباشد. خطا معمولاً پس از نصب، فعالسازی یا بهروزرسانی یک افزونه مشاهده میشود.
افزونههایی که در بخشهای زیر دخالت دارند احتمال بیشتری برای ایجاد خطا دارند:
- کش و بهینهسازی
- امنیت
- پرداخت
- عضویت
- صفحهساز
- چندزبانه
- ریدایرکت
- فروشگاه اینترنتی
- اتصال به API
- تهیه نسخه پشتیبان
۴. مشکل قالب وردپرس
خطای کدنویسی در قالب یا ناسازگاری آن با نسخه جدید PHP و وردپرس میتواند ارور 500 ایجاد کند.
اگر خطا بلافاصله پس از تغییر یا بهروزرسانی قالب شروع شده است، باید موارد زیر بررسی شوند:
- فایل
functions.php - کدهای سفارشی
- قالب فرزند
- کتابخانههای قالب
- سازگاری با افزونههای اصلی
- نسخه PHP موردنیاز
- فایلهای ناقص بهروزرسانی
۵. محدودیت حافظه PHP
هر فرایند PHP مقدار مشخصی حافظه در اختیار دارد. اگر افزونه، قالب، کوئری یا عملیات سنگینی بیش از این مقدار مصرف کند، اجرای درخواست متوقف میشود.
در لاگ ممکن است پیامی مشابه نمونه زیر ثبت شود:
Allowed memory size exhausted
کمبود حافظه ممکن است هنگام انجام کارهای زیر رخ دهد:
- ویرایش صفحه سنگین
- درونریزی محصولات
- تهیه نسخه پشتیبان
- تولید گزارش
- پردازش تصاویر
- اجرای صفحهساز
- ثبت سفارش پیچیده
- اجرای چند افزونه سنگین
افزایش حافظه بدون پیدا کردن عامل مصرف بالا همیشه راهحل نهایی نیست. ممکن است یک افزونه معیوب یا کوئری غیرضروری تمام منابع را مصرف کند.
۶. تمام شدن زمان اجرای اسکریپت
سرور برای اجرای هر اسکریپت محدودیت زمانی تعیین میکند. اگر پردازش از زمان مجاز بیشتر شود، درخواست ممکن است متوقف شود.
فرایندهای زیر بیشتر در معرض این مشکل قرار دارند:
- درونریزی حجم زیادی از اطلاعات
- خروجی گرفتن از سفارشها
- پردازش فایلهای بزرگ
- ارتباط طولانی با سرویس خارجی
- ساخت تصاویر
- پشتیبانگیری
- اجرای عملیات گروهی
در گزارش خطا ممکن است پیام زیر دیده شود:
Maximum execution time exceeded
راهحل صحیح میتواند تقسیم عملیات به بخشهای کوچکتر، اجرای پردازش در صف یا بهینهسازی کد باشد؛ نه فقط افزایش نامحدود زمان اجرا.
۷. ناسازگاری نسخه PHP
ممکن است قالب، افزونه یا کد سایت با نسخه PHP سرور هماهنگ نباشد.
دو حالت رایج وجود دارد:
- کد قدیمی با نسخه جدید PHP سازگار نیست.
- افزونه جدید به نسخه بالاتری از PHP نیاز دارد.
تغییر نسخه PHP باید با بررسی نیازمندیهای وردپرس، قالب و افزونهها انجام شود. بازگرداندن موقت نسخه قبلی میتواند سایت را در دسترس قرار دهد، اما در ادامه باید عامل ناسازگار بهروزرسانی یا جایگزین شود.
۸. سطح دسترسی یا مالکیت اشتباه فایلها
وبسرور برای خواندن و اجرای فایلها به سطح دسترسی مناسب نیاز دارد. Permission یا Ownership نادرست میتواند دسترسی برنامه به فایلها را مختل کند.
مقادیر رایج در بسیاری از هاستهای لینوکسی عبارتاند از:
- پوشهها: 755
- فایلها: 644
این مقادیر برای تمام سرورها قطعی نیستند. تنظیم صحیح به روش اجرای وبسرور و PHP بستگی دارد. استفاده از دسترسی 777 راهحل امنی نیست و میتواند خطر امنیتی ایجاد کند.
۹. فایلهای ناقص یا خراب
قطع شدن فرایند آپلود یا بهروزرسانی ممکن است بعضی فایلها را ناقص کند. این مشکل معمولاً پس از موارد زیر دیده میشود:
- بهروزرسانی نیمهکاره وردپرس
- قطع ارتباط FTP
- نصب ناقص افزونه
- انتقال ناموفق سایت
- استخراج ناقص فایل فشرده
- خرابی فضای ذخیرهسازی
۱۰. خطای اتصال یا کوئری پایگاه داده
خطاهای پایگاه داده همیشه با پیام «Error Establishing a Database Connection» نمایش داده نمیشوند. ممکن است یک کوئری نامعتبر، جدول خراب یا پاسخ غیرمنتظره باعث Exception و ارور 500 شود.
دلایل احتمالی عبارتاند از:
- جدول ناقص یا خراب
- کوئری سنگین
- اطلاعات اتصال اشتباه
- محدودیت تعداد Connection
- تمام شدن فضای دیتابیس
- مهاجرت ناقص دادهها
- ناسازگاری ساختار جدول با نسخه برنامه
۱۱. پر شدن فضای هاست یا Inode
اگر فضای ذخیرهسازی هاست پر شود، سایت ممکن است نتواند فایل موقت، کش، Session، لاگ یا اطلاعات جدید ایجاد کند.
همچنین ممکن است حجم کلی هنوز آزاد باشد اما تعداد فایلهای مجاز یا Inode به پایان رسیده باشد.
نشانههای احتمالی عبارتاند از:
- آپلود نشدن فایل
- ذخیره نشدن تغییرات
- خطا در ثبت سفارش
- ایجاد نشدن کش
- ناقص ماندن بکاپ
- بروز خطا پس از افزایش حجم لاگها
برای آشنایی با منابع و ساختار فضای میزبانی میتوانید مقاله هاست چیست را مطالعه کنید.
۱۲. تنظیمات اشتباه وبسرور
پیکربندی اشتباه Apache، Nginx، LiteSpeed یا PHP-FPM میتواند باعث ایجاد خطای 500 شود.
نمونهها:
- دستور پشتیبانینشده
- ماژول غیرفعال
- مسیر اشتباه فایل
- تنظیم نادرست Virtual Host
- حلقه Rewrite
- تنظیمات نامعتبر PHP
- مشکل Socket یا PHP-FPM
- محدودیت نادرست Request
۱۳. خرابی API یا سرویس خارجی
ممکن است سایت هنگام پردازش درخواست به سرویس دیگری متصل شود؛ برای مثال:
- درگاه پرداخت
- سامانه پیامک
- سرویس حملونقل
- CRM
- API قیمت
- سرویس احراز هویت
- انبارداری
- حسابداری
اگر خطای سرویس خارجی بهدرستی مدیریت نشود، برنامه ممکن است بهجای نمایش پیام قابل فهم، ارور 500 برگرداند.
۱۴. ترافیک یا مصرف بالای منابع
در ساعات پرترافیک ممکن است پردازنده، حافظه، Workerها یا تعداد اتصالهای همزمان به حد مجاز برسند.
در این حالت خطا معمولاً موقتی یا متناوب است و برای همه کاربران در یک زمان رخ نمیدهد.
در طراحی سایت فروشگاهی، منابع سرور باید متناسب با تعداد کاربران، محصولات، سفارشها و پردازشهای پسزمینه انتخاب شوند. فروشگاه پرترافیک روی زیرساخت ضعیف ممکن است هنگام کمپین فروش با خطاهای سروری مواجه شود.
۱۵. بدافزار یا تغییرات غیرمجاز
بدافزار میتواند فایلهای PHP، تنظیمات سرور یا .htaccess را تغییر دهد و باعث خطای 500 شود.
نشانههای احتمالی شامل موارد زیر هستند:
- ایجاد فایلهای ناشناس
- تغییر ناگهانی
.htaccess - ساخت کاربران مدیریتی ناشناس
- ریدایرکتهای غیرعادی
- افزایش شدید مصرف منابع
- تغییر تاریخ فایلهای اصلی
- خطا پس از رفع یک آلودگی ناقص
چگونه علت ارور 500 را پیدا کنیم؟
چون پیام 500 عمومی است، تشخیص نباید براساس حدس انجام شود. مراحل زیر به پیدا کردن منبع واقعی کمک میکنند.
۱. زمان شروع خطا را مشخص کنید
بررسی کنید خطا پس از چه اتفاقی آغاز شده است:
- نصب یا بهروزرسانی افزونه
- تغییر قالب
- ویرایش کد
- تغییر نسخه PHP
- انتقال هاست
- ویرایش
.htaccess - انتشار نسخه جدید سایت
- شروع کمپین تبلیغاتی
- تغییر تنظیمات CDN
- درونریزی اطلاعات
آخرین تغییر معمولاً اولین موردی است که باید بررسی شود.
۲. محدوده خطا را مشخص کنید
بررسی کنید خطا در کدام حالت رخ میدهد:
- تمام سایت
- فقط صفحه اصلی
- فقط صفحات داخلی
- پنل مدیریت
- یک محصول خاص
- صفحه پرداخت
- فرم تماس
- API
- کاربران واردشده
- کاربران موبایل
- یک زمان یا ترافیک مشخص
این اطلاعات دامنه بررسی را محدود میکنند.
۳. کد وضعیت را بررسی کنید
در خط فرمان میتوان از دستور زیر استفاده کرد:
curl -I https://example.com/problem-page/
اگر سرور واقعاً خطای 500 برگرداند، نتیجه شامل عبارتی مانند نمونه زیر است:
HTTP/2 500
در مرورگر نیز میتوان بخش Network ابزارهای توسعهدهنده را بررسی کرد.
۴. Error Log را بخوانید
مهمترین اقدام برای تشخیص خطای 500 بررسی گزارشهای خطاست. در لاگ ممکن است نام فایل، شماره خط، نوع خطا و زمان وقوع ثبت شده باشد.
در Apache، Error Log محل اصلی ثبت اطلاعات تشخیصی و خطاهای پردازش درخواستهاست و معمولاً اولین مرجع برای بررسی مشکلات سرور محسوب میشود.
در هاستهای اشتراکی ممکن است گزارشها در بخشهایی مانند موارد زیر قرار داشته باشند:
Errors
Error Log
PHP Error Log
Raw Access
Logs
نام دقیق بخش به کنترلپنل هاست بستگی دارد.
روشهای رفع ارور 500
مرحله اول: از سایت نسخه پشتیبان تهیه کنید
پیش از تغییر فایلها، دیتابیس، افزونهها یا نسخه PHP، نسخه پشتیبان تهیه کنید. اگر سایت از قبل خطا دارد، حداقل فایلها و دیتابیس فعلی را ذخیره کنید تا بررسی باعث از دست رفتن اطلاعات نشود.
مرحله دوم: آخرین تغییر را برگردانید
اگر خطا بلافاصله پس از تغییر مشخصی ایجاد شده است، همان تغییر را موقتاً به حالت قبل برگردانید.
برای مثال:
- نسخه قبلی افزونه را بازیابی کنید.
- کد جدید را حذف کنید.
- قالب قبلی را فعال کنید.
- نسخه قبلی برنامه را Deploy کنید.
- تنظیم جدید
.htaccessرا بازگردانید. - نسخه PHP قبلی و سازگار را موقتاً انتخاب کنید.
بازگرداندن سریع سایت مهم است؛ اما پس از آن باید علت اصلی بررسی شود.
مرحله سوم: کش مرورگر، سایت و CDN را پاک کنید
گاهی منبع خطا رفع شده اما نسخه خطادار در کش باقی مانده است.
کشهای زیر را بررسی کنید:
- مرورگر
- افزونه کش
- کش سرور
- Object Cache
- CDN
- Reverse Proxy
پاک کردن کش نباید جایگزین بررسی Error Log شود.
مرحله چهارم: فایل .htaccess را بررسی کنید
اگر سایت روی Apache یا LiteSpeed قرار دارد، فایل .htaccess را موقتاً تغییر نام دهید:
.htaccess
به:
.htaccess_old
سپس سایت را آزمایش کنید. اگر خطا برطرف شد، مشکل از یکی از قوانین این فایل است.
در وردپرس میتوان پس از ورود به پنل، وارد مسیر زیر شد:
تنظیمات ← پیوندهای یکتا
و تنظیمات را دوباره ذخیره کرد تا قوانین پایه ایجاد شوند.
پیش از تغییر نام فایل حتماً از آن نسخه پشتیبان بگیرید؛ زیرا ممکن است شامل قوانین امنیت، کش و ریدایرکت باشد.
مرحله پنجم: افزونههای وردپرس را غیرفعال کنید
اگر به پیشخوان دسترسی دارید، افزونهها را غیرفعال و سپس یکییکی فعال کنید تا افزونه مشکلدار مشخص شود.
اگر پیشخوان باز نمیشود:
- وارد File Manager یا FTP شوید.
- به پوشه زیر بروید:
wp-content
- پوشه
pluginsرا موقتاً تغییر نام دهید:
plugins_old
- سایت را آزمایش کنید.
- نام پوشه را به حالت قبل برگردانید.
- افزونهها را یکییکی فعال و بررسی کنید.
تغییر نام پوشه باعث غیرفعال شدن موقت افزونهها میشود. این اقدام را روی سایت فروشگاهی پرتراکنش با احتیاط انجام دهید؛ زیرا افزونههای پرداخت، ارسال یا امنیت نیز غیرفعال خواهند شد.
مستندات وردپرس نیز بررسی .htaccess، غیرفعال کردن افزونهها، آزمایش قالب و کنترل حافظه PHP را از اقدامات اصلی تشخیص Internal Server Error معرفی میکند.
مرحله ششم: قالب را بررسی کنید
اگر خطا با غیرفعال کردن افزونهها برطرف نشد، قالب را بررسی کنید.
اگر به پنل دسترسی دارید، یک قالب استاندارد و سازگار وردپرس را موقتاً فعال کنید. اگر دسترسی ندارید، میتوان پوشه قالب فعال را از طریق FTP تغییر نام داد؛ البته باید یک قالب پیشفرض سالم روی سایت نصب باشد.
اگر با فعال شدن قالب پیشفرض مشکل رفع شد، موارد زیر را در قالب قبلی بررسی کنید:
- فایل
functions.php - کدهای سفارشی
- قالب فرزند
- نسخه PHP
- فایلهای ناقص
- توابع منسوخ
- وابستگی به افزونه خاص
مرحله هفتم: دیباگ وردپرس را فعال کنید
برای ثبت جزئیات خطا میتوان حالت Debug را موقتاً در فایل wp-config.php فعال کرد:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
این تنظیمات معمولاً خطاها را در فایل زیر ثبت میکنند:
wp-content/debug.log
مقدار WP_DEBUG_DISPLAY روی false قرار گرفته است تا جزئیات فنی در صفحه عمومی به کاربران نمایش داده نشوند. نمایش مسیر فایلها، کوئریها و جزئیات خطا در محیط اصلی میتواند اطلاعات حساس سایت را آشکار کند.
پس از پایان بررسی، حالت Debug را غیرفعال و فایل لاگ را از نظر اطلاعات حساس کنترل کنید. قابلیت WP_DEBUG_LOG برای ذخیره خطاهای وردپرس در فایل debug.log طراحی شده است.
مرحله هشتم: محدودیت حافظه را بررسی کنید
اگر در گزارش خطا عبارت زیر دیده میشود، سایت با کمبود حافظه مواجه است:
Allowed memory size exhausted
راهحلها میتوانند شامل موارد زیر باشند:
- غیرفعال کردن افزونه سنگین یا معیوب
- بهینهسازی کوئریها
- کاهش حجم عملیات گروهی
- تقسیم پردازش به چند مرحله
- افزایش حافظه PHP با هماهنگی هاست
- استفاده از زیرساخت متناسب با سایت
صرفاً افزایش Memory Limit بدون پیدا کردن دلیل مصرف بالا ممکن است مشکل را موقتاً پنهان کند.
مرحله نهم: نسخه PHP را کنترل کنید
نسخه PHP فعلی را با نیازمندیهای وردپرس، قالب و افزونهها مقایسه کنید.
اگر خطا پس از تغییر نسخه PHP آغاز شده است:
- لاگ خطا را بررسی کنید.
- افزونه یا قالب ناسازگار را شناسایی کنید.
- نسخه سازگار را موقتاً فعال کنید.
- افزونه یا قالب را بهروزرسانی یا جایگزین کنید.
- تغییر نهایی را ابتدا در نسخه آزمایشی تست کنید.
استفاده طولانیمدت از نسخه قدیمی و پشتیبانینشده PHP میتواند خطر امنیتی ایجاد کند.
مرحله دهم: Permission و Ownership را اصلاح کنید
سطح دسترسی فایلها و پوشهها را بررسی کنید. در بسیاری از هاستها مقادیر معمول 644 برای فایلها و 755 برای پوشهها هستند، اما باید تنظیم مناسب از شرکت میزبانی دریافت شود.
نکات مهم:
- از 777 بهعنوان راهحل عمومی استفاده نکنید.
- مالکیت فایلها باید با کاربر مناسب هماهنگ باشد.
- فقط فایلهای ضروری قابلیت نوشتن داشته باشند.
- پس از انتقال هاست، Ownership را بررسی کنید.
- فایلهای حساس دسترسی بیش از حد نداشته باشند.
مرحله یازدهم: فایلهای اصلی وردپرس را بررسی کنید
اگر فایلهای هسته ناقص یا تغییر کردهاند، میتوان نسخه سالم و هماهنگ وردپرس را جایگزین کرد.
این کار باید با احتیاط انجام شود:
- ابتدا نسخه پشتیبان تهیه کنید.
- نسخه دقیق وردپرس را مشخص کنید.
- پوشه
wp-contentرا جایگزین نکنید. - فایل
wp-config.phpرا حذف نکنید. - پس از جایگزینی فایلها، سایت و پنل را آزمایش کنید.
اگر تجربه کافی ندارید، این مرحله را به توسعهدهنده یا پشتیبانی هاست بسپارید.
مرحله دوازدهم: پایگاه داده را بررسی کنید
در صورت مشاهده خطاهای دیتابیس در لاگ، موارد زیر باید کنترل شوند:
- درستی اطلاعات اتصال
- سلامت جدولها
- فضای ذخیرهسازی دیتابیس
- تعداد اتصالهای همزمان
- کوئریهای کند
- تغییرات اخیر ساختار جدول
- نسخه دیتابیس
- مهاجرت ناقص
- افزونههایی که جدول اختصاصی دارند
تعمیر یا تغییر مستقیم دیتابیس بدون بکاپ میتواند باعث از دست رفتن اطلاعات شود.
مرحله سیزدهم: فضای هاست و منابع را کنترل کنید
در کنترلپنل هاست، موارد زیر را بررسی کنید:
- Disk Usage
- Inode Usage
- CPU
- RAM
- Entry Processes
- I/O
- تعداد Processها
- PHP Workers
- Database Connections
اگر خطا فقط در ساعات پرترافیک رخ میدهد، گزارش مصرف منابع در همان بازه زمانی اهمیت بیشتری دارد.
مرحله چهاردهم: CDN و Firewall را موقتاً بررسی کنید
اگر خطا پس از فعال کردن CDN یا فایروال ایجاد شده است، ارتباط میان CDN و سرور اصلی را بررسی کنید.
موارد محتمل:
- محدود شدن IPهای CDN
- خطای SSL میان CDN و Origin
- قانون اشتباه Firewall
- پاسخ متفاوت Origin
- کش شدن خطای 500
- Timeout در ارتباط با سرور اصلی
غیرفعال کردن کامل امنیت سایت بدون برنامه توصیه نمیشود. فقط قانون یا سرویس مشکوک را در محیط کنترلشده آزمایش کنید.
مرحله پانزدهم: با پشتیبانی هاست تماس بگیرید
اگر به گزارشهای سرور یا تنظیمات PHP-FPM دسترسی ندارید، شرکت میزبانی باید بررسی کند:
- علت دقیق ثبتشده در Error Log
- محدودیت منابع
- ماژولهای فعال
- وضعیت PHP-FPM
- Permission و Ownership
- فضای دیسک
- تنظیمات وبسرور
- اختلال عمومی سرور
- تغییرات اخیر زیرساخت
هنگام ارسال درخواست پشتیبانی، این اطلاعات را ارائه دهید:
- URL خطادار
- زمان دقیق وقوع
- دائمی یا موقتی بودن
- آخرین تغییر انجامشده
- تصویر خطا
- IP کاربر در صورت نیاز
- Request ID اگر در صفحه خطا وجود دارد
- بخشهایی که سالم هستند
رفع ارور 500 در سایت فروشگاهی
در فروشگاه اینترنتی، خطای 500 ممکن است فقط در یکی از مراحل زیر ظاهر شود:
- افزودن محصول به سبد
- اعمال کد تخفیف
- محاسبه هزینه ارسال
- ورود یا ثبتنام
- انتخاب روش پرداخت
- بازگشت از درگاه
- ثبت سفارش
- کاهش موجودی
- صدور فاکتور
- ارسال پیامک
- اتصال به حسابداری
در چنین شرایطی نباید فقط صفحه اصلی بررسی شود. کل مسیر خرید باید با یک سفارش آزمایشی کنترل شود.
دلایل متداول عبارتاند از:
- تداخل افزونههای فروشگاهی
- خطای درگاه پرداخت
- پاسخ نامعتبر سرویس حملونقل
- کمبود حافظه
- کوئری سنگین سبد خرید
- خطای Session
- ناسازگاری نسخه PHP
- مشکل Webhook
- اجرای همزمان چند عملیات پس از خرید
خطای 500 در مرحله پرداخت میتواند باعث ثبت سفارش ناقص یا پرداخت موفق بدون تغییر وضعیت سفارش شود. پیش از تکرار پرداخت باید وضعیت تراکنش در درگاه و پنل فروشگاه بررسی شود.
رفع خطای 500 در سایت شرکتی
در طراحی سایت شرکتی خطا ممکن است هنگام ارسال فرم، بارگذاری نمونهکار، دانلود کاتالوگ یا اجرای صفحات چندزبانه ایجاد شود.
اگر فقط فرمها خطا دارند، موارد زیر را بررسی کنید:
- تنظیمات ایمیل
- اعتبارسنجی دادهها
- محدودیت حجم فایل
- اتصال به CRM
- کپچا
- افزونه فرمساز
- درخواست AJAX
- API پیامک
رفع خطای 500 در سایت پزشکی
در طراحی سایت پزشکی بخشهایی مانند رزرو نوبت، پنل بیمار و پرداخت باید علاوه بر دسترسپذیری، از نظر امنیت و حفظ اطلاعات نیز بررسی شوند.
در زمان رفع خطا نباید جزئیات بیمار، اطلاعات فرمها یا مسیرهای داخلی سیستم در صفحه عمومی نمایش داده شوند. گزارشهای فنی باید در فضای امن نگهداری شوند و دسترسی به آنها محدود باشد.
رفع خطای 500 در سایت خدماتی
در طراحی سایت خدماتی ممکن است محاسبه قیمت، انتخاب زمان، بارگذاری فایل یا ثبت درخواست به APIهای مختلف وابسته باشد.
اگر سرویس خارجی در دسترس نباشد، سایت باید پیام قابل فهم نمایش دهد و از تبدیل خطای سرویس به خطای عمومی 500 جلوگیری کند.
رفع خطای 500 در سایت صنعتی
در طراحی سایت صنعتی فایلهای حجیم، کاتالوگها، فرمهای دریافت پیشفاکتور و درونریزی محصولات میتوانند منابع زیادی مصرف کنند.
برای جلوگیری از خطا بهتر است:
- فایلهای بزرگ بهینه شوند.
- درونریزیها مرحلهای انجام شوند.
- پردازشهای سنگین در صف قرار گیرند.
- گزارش خطا برای APIها فعال باشد.
- محدودیت آپلود متناسب تنظیم شود.
- عملیات طولانی به درخواست مرورگر وابسته نباشد.
تأثیر ارور 500 بر سئو
یک خطای کوتاهمدت معمولاً بهتنهایی باعث حذف فوری صفحات از نتایج نمیشود. موتور جستوجو ممکن است بعداً دوباره URL را بررسی کند.
اما اگر خطای 500 برای تعداد زیادی از صفحات یا مدت طولانی ادامه پیدا کند، پیامدهای زیر محتمل هستند:
- کاهش نرخ خزش
- شناسایی نشدن محتوای جدید
- بهروزرسانی نشدن صفحات در نتایج
- خروج تدریجی URLهای دائماً خطادار از ایندکس
- کاهش اعتماد کاربران
- افزایش خروج از سایت
- ناقص شدن فرایند خرید یا ثبت درخواست
گوگل هنگام مشاهده تعداد قابل توجهی خطای 5xx سرعت خزش سایت را کاهش میدهد و URLهایی که برای مدت طولانی خطای سرور برگردانند ممکن است در نهایت از ایندکس خارج شوند. پس از بازگشت پاسخهای موفق، نرخ خزش بهتدریج افزایش پیدا میکند.
آیا برای تعمیرات سایت از کد 500 استفاده کنیم؟
برای تعمیرات برنامهریزیشده، کد 503 معمولاً مفهوم دقیقتری دارد؛ زیرا نشان میدهد سرویس بهصورت موقت در دسترس نیست.
در صورت امکان میتوان همراه با 503 هدر Retry-After نیز ارسال کرد تا زمان تقریبی تلاش مجدد مشخص شود.
کد 500 برای یک خطای داخلی غیرمنتظره است و نباید بهعنوان صفحه عادی تعمیرات استفاده شود.
روش های جلوگیری از تکرار ارور 500
استفاده از محیط آزمایشی
بهروزرسانیهای مهم ابتدا روی نسخه Staging آزمایش شوند و سپس به سایت اصلی منتقل شوند.
تهیه نسخه پشتیبان منظم
از فایلها و دیتابیس نسخه پشتیبان تهیه و امکان بازیابی آن آزمایش شود. بکاپی که قابل Restore نباشد ارزش عملی کمی دارد.
مانیتورینگ سایت
سرویس مانیتورینگ میتواند هنگام دریافت پاسخ 500 یا از دسترس خارج شدن سایت به مدیر اطلاع دهد.
ثبت لاگ استاندارد
لاگ باید زمان، مسیر، نوع خطا و شناسه درخواست را ثبت کند؛ اما نباید رمز عبور، اطلاعات پرداخت یا داده حساس کاربران را ذخیره کند.
بهروزرسانی کنترلشده
وردپرس، افزونهها، قالب و PHP باید بهروز باشند؛ اما تغییرات اصلی بهتر است با نسخه پشتیبان و امکان بازگشت انجام شوند.
بررسی منابع سرور
مصرف CPU، حافظه، فضای دیسک، دیتابیس و Workerها باید متناسب با رشد سایت کنترل شود.
مدیریت خطا در برنامه
برنامه باید خطاهای API و Exceptionها را مدیریت کند و بهجای نمایش اطلاعات فنی، پیام مناسبی به کاربر نشان دهد.
محدود کردن دسترسی به اطلاعات خطا
Debug Mode نباید بهصورت دائمی در سایت اصلی با نمایش عمومی فعال باشد. اطلاعات فنی باید در لاگ امن ذخیره شوند.
چکلیست سریع رفع خطای 500
- زمان شروع خطا را مشخص کنید.
- آخرین تغییر سایت را بررسی کنید.
- محدوده صفحات خطادار را پیدا کنید.
- وضعیت HTTP را تأیید کنید.
- Error Log سرور را بخوانید.
- از سایت نسخه پشتیبان تهیه کنید.
- کش سایت و CDN را پاک کنید.
.htaccessرا آزمایش کنید.- افزونههای وردپرس را بررسی کنید.
- قالب را موقتاً تغییر دهید.
- Debug Log را فعال کنید.
- نسخه PHP را کنترل کنید.
- محدودیت حافظه را بررسی کنید.
- سطح دسترسی و مالکیت فایلها را کنترل کنید.
- سلامت فایلهای اصلی را بررسی کنید.
- فضای دیسک و Inode را کنترل کنید.
- اتصال دیتابیس را بررسی کنید.
- APIهای خارجی را آزمایش کنید.
- درگاه و فرایند سفارش را تست کنید.
- در صورت نیاز با هاست تماس بگیرید.
- پس از رفع، Debug عمومی را غیرفعال کنید.
- سایت را در موبایل و دسکتاپ آزمایش کنید.
- گزارش Search Console را بررسی کنید.
جمعبندی
ارور 500 یک خطای عمومی سمت سرور است و نشان میدهد سرور بهدلیل مشکلی غیرمنتظره نتوانسته درخواست را کامل کند. این پیام علت دقیق خطا را مشخص نمیکند؛ بنابراین بررسی Error Log مهمترین مرحله تشخیص است.
خطای کدنویسی، خرابی .htaccess، تداخل افزونهها، ناسازگاری قالب، کمبود حافظه، نسخه نامناسب PHP، Permission اشتباه، فایل ناقص، مشکل دیتابیس و محدودیت منابع از دلایل متداول ایجاد ارور 500 هستند.
بهترین روش رفع خطا این است که ابتدا محدوده مشکل و آخرین تغییر مشخص شود، سپس گزارشهای فنی بررسی و اصلاحات مرحلهبهمرحله انجام شوند. تغییر همزمان چند بخش یا افزایش بدون بررسی منابع ممکن است تشخیص علت اصلی را دشوارتر کند.
سؤالات متداول
ارور 500 یعنی چه؟
این خطا یعنی سرور هنگام پردازش درخواست با مشکل غیرمنتظرهای مواجه شده و نتوانسته پاسخ عادی ارائه دهد.
آیا ارور 500 از اینترنت کاربر است؟
معمولاً خیر. خطای 500 در سمت سایت یا سرور ایجاد میشود، هرچند کاربر میتواند برای اطمینان صفحه را دوباره بارگذاری و با مرورگر دیگری آزمایش کند.
اولین اقدام برای رفع خطای 500 چیست؟
ابتدا زمان شروع و آخرین تغییر را مشخص کنید؛ سپس Error Log سرور را بررسی کنید. بدون مشاهده لاگ، علت دقیق مشخص نخواهد شد.
چرا بعد از نصب افزونه خطای 500 ایجاد شد؟
افزونه ممکن است با نسخه PHP، وردپرس، قالب یا افزونه دیگری ناسازگار باشد یا حافظه زیادی مصرف کند. افزونه را موقتاً غیرفعال و لاگ خطا را بررسی کنید.
آیا خراب شدن .htaccess باعث خطای 500 میشود؟
بله. دستور اشتباه یا پشتیبانینشده در .htaccess میتواند باعث Internal Server Error شود. قبل از ویرایش یا تغییر نام فایل، نسخه پشتیبان تهیه کنید.
آیا افزایش حافظه PHP خطای 500 را حل میکند؟
فقط در صورتی که علت خطا کمبود حافظه باشد. حتی در این حالت نیز باید دلیل مصرف غیرعادی حافظه بررسی شود.
چرا فقط صفحه پرداخت خطای 500 دارد؟
احتمال دارد مشکل از درگاه، افزونه فروشگاهی، محاسبه ارسال، Session، API خارجی یا عملیات پس از ثبت سفارش باشد. لاگ همان درخواست باید بررسی شود.
تفاوت خطای 500 و 503 چیست؟
500 نشاندهنده خطای داخلی غیرمنتظره است؛ اما 503 معمولاً میگوید سرویس بهصورت موقت بهدلیل تعمیرات یا فشار در دسترس نیست.
آیا خطای 500 روی سئو اثر دارد؟
اگر کوتاه و محدود باشد معمولاً اثر ماندگاری ندارد. ادامهدار بودن خطا میتواند نرخ خزش را کاهش دهد و باعث خروج تدریجی صفحات از نتایج شود.
آیا فعال کردن WP_DEBUG در سایت اصلی امن است؟
برای تشخیص میتوان آن را موقتاً فعال کرد، اما نمایش خطاها باید غیرفعال باشد. پس از پایان بررسی نیز Debug را خاموش و فایلهای لاگ را کنترل کنید.












