12 روش کاربردی رفع ارور 500 Internal Server در سایت
فرض کنید صاحب وبسایتی هستید و صفحه لندینگی برای کمپین تبلیغاتی طراحی شده برای سایتتان ایجاد کردهاید. تمام کارها انجام شده و امروز که روز اجرای کمپین است، خودتان هم سری به صفحه کمپین میزنید تا نتیجه تلاشهایتان را مشاهده کنید. اما سایت بالا نمیآید و پیام “500 Internal Server” را نشان میدهد.
اکثر ارورهای وبسایت دلیل مشخصی دارند که به همین خاطر صاحب وبسایت در اسرع وقت میتواند نسبت به حل آن اقدام کند. اما در طرف مقابل، ارورهای تحت کد 5xx که ارور 500 Internal Server هم نمونهای از آنهاست، عموما خطاهایی هستند که سرور قادر به تشخیص علت دقیق آنها نبوده و بایستی دلایل احتمالی بروز ارور را بررسی کرد. یکی از دلایل رایج خطای ۵۰۰ مشکل در اتصال به اینترنت و همچنین معیوب بودن فایل htaccess. است.
این ارور نامهای متفاوتی دارد که همگی به یک مفهوم بوده و به عدم توانایی سرور مجازی هاستینگ در ریشهیابی علت خطا اشاره دارند. دامنه گستردهای از عوامل میتواند در پشت ارور 500 Internal Server باشد و به همین دلیل است که این ارور به یک خطای رایج در بین وبسایتها تبدیل شده است.
هیچ بازدیدکنندهای در صفحه وبسایتی که بارگذاری نمیشود نمیماند. Down بودن سایت شرایط ناخوشایندی برای بازدیدکنندگان و صاحب آن است که میتواند رتبه وبسایت را در رنکینگ SERP گوگل کاهش دهد و بر نمره سئوی سایت تاثیر منفی بگذارد.
به همین خاطر باید سریعا برای حل خطاهایی مانند ارور 404 و 500 Internal Server اقدام کرد. اینجا 12 روش کاربردی رفع ارور 500 Internal Server در سایت را برایتان شرح میدهیم.
اولین راهکار برای مواجه نشدن با چنین خطاهایی در سایت، خرید سرور مجازی پرسرعت و با کیفیت بالا است. اگر خطایی از سمت سرور رخ ندهد صفحات سایت به سرعت لود میشوند و هیچ بازدیدکنندهای به این زودی از سایت شما خارج نمیشود.
خطای Internal Server 500 چیست؟
در هر بازدیدی که کاربر از صفحه وبسایت دارد، مرورگر درخواستی به سرور جهت بازدید از صفحه سایت میفرستد و سرور اطلاعات خواستهشده را جمعآوری و برای کاربر ارسال میکند. در مواقعی که سرور نتواند اطلاعات خواسته شده را به کاربر ارائه دهد، این عدم توانایی را در صفحه وبسایت بصورت ارور نمایش میدهد.
در دنیای وب برای سهولت کار برای هر نوع خطا یک کد در نظر گرفته شدهاست. سری کدهای 4xx و 5xx مانند ارور 404 و 500 از ارورهای رایج هستند. اکثر ارورها ریشه خطا را نیز نمایش میدهند. اما ارور Internal Server 500 اینگونه نیست.
ارور Internal Server 500 یک ارور متداول از نوع HTTP status code است که معمولا به مشکلی در سمت سرور وبسایت اشاره دارد. معنی internal server error این است که سرور با شرایط پیشبینی نشدهای مواجه شده و نتوانسته مشکل را شناسایی بکند.
به همین جهت وبمستر و صاحب وبسایت بایستی در کمترین زمان ریشه ارور را پیدا و آن را رفع کند تا نمره سئو، اعتبار و تعداد مخاطبین وبسایت دستخوش تغییر منفی نشود.
این ارور به شکلهای مختلفی نمایش داده میشود که در زیر چند نمونه را میتوانید مشاهده کنید:
- 500 Internal Server Error
- Internal Server Error 500
- HTTP Error 500
- HTTP Status 500 – Internal Server Error
- Error 500 Internal Server Error
- 500 Error
- 500. That’s an error
این خطا در وب فارسی به نامهای ارور سرور 500 المنتور، ارور 500 در گوگل و ارور 500 در کروم نیز شناخته میشود. نحوه نمایش این ارور در وبسایتها نیز میتواند متفاوت باشد. در زیر نمونههایی را میتوانید مشاهده کنید:
- صفحه ارور 500 Internal Server Error بصورت پیشفرض:
- صفحه سرور ارور 500 بصورت سفارشی:
ارور HTTP 500 در گوگل:
تصاویر بالا صرفا مثالهایی از نحوه نمایش این ارور بودند و ارور http error 500 در فرمتهای مختلف و متنوعی میتواند به نمایش درآید.
رایج ترین دلایل بروز ارور 500 Internal Server
نمایان شدن عبارت 500 Internal Server Error در صفحه وبسایت احتمالا به دلیل بروز حداقل یکی از این مشکلات است:
- cache معیوب مرورگر
- وجود مشکل موقت در اتصال اینترنت
- وحود rule های نادرست در فایل htaccess. وبسایت
- ارائه permission نادرست به فایلها و پوشهها
- ورژن نادرست PHP وبسایت
- فایل htaccess. معیوب وبسایت
- دیتابیس معیوب وبسایت
- بروز مشکل در پلاگین و تم theme وردپرس
- پر شدن حافظه PHP وبسایت
- وجود فایلهای حجیم در وبسایت
- اختلال لحظهای در اتصال به اینترنت
با بررسی این فاکتورها میتوانید مشکل مولد سرور ارور 500 را ریشهیابی و برطرف کنید. در بخش بعدی 12 روش کاربردی رفع خطای ۵۰۰ در سایت را معرفی کردهایم تا بتوانید تک تک این مشکلات را حل کنید.
چگونه خطای HTTP Error 500 سایت را برطرف کنیم؟
از آنجایی که خطای 500 Internal Server طبق لیست بالا میتواند دلایل گوناگونی داشته باشد و صفحه وبسایت دلیل اصلی بروز http 500 را نمایش نمیدهد مجبوریم تا تعدادی از علل بالا را بررسی کنیم تا موفق به ردیابی و رفع مشکل اصلی شویم. روش های رفع ارور 500 Internal Server به شرح زیر هستند:
رفع 500 Internal Server از سمت بازدیدکننده
اگرچه متن این ارور به ما میگوید که مشکل احتمالا از سمت سرور است، اما ماجرا همیشه اینگونه نیست. این امکان وجود دارد که خطا از سمت بازدیدکننده وبسایت باشد. یعنی وبسایت up باشد ولی برای کاربری ارور 500 Internal Server به نمایش دربیاید.
اگر بعنوان بازدیدکننده به صفحه وبسایتی رفته و با خطای سرور 500 مواجه شدهاید تنها کاری که برای رفع این خطا میتوانید انجام دهید بررسی اتصال اینترنتتان است. البته به عنوان صاحب وبسایت هم در گام اول میتوانید این بررسیها را انجام دهید.
اگر خطا از طرف شما و در یک سیستم Local رخ داده باشد با انجام روشهایی که در ادامه گفته میشود میتوانید مشکل را سریعا حل کنید.
1. بارگذاری مجدد یا Reload صفحه:
این امکان وجود دارد که خطای 500 فقط برای شما نمایش داده میشود. شاید وبسایت به درستی درحال پاسخگویی به درخواستهای مرورگرها است و شما بخاطر یک قطعی یا اختلال موقت در اتصال اینترنت با ارور 500 Internal Server مواجه شدهاید و یا نتوانستهاید اتصالی با سرور برقرار کنید.
با کلیک روی آیکون Reload در مرورگر یا فشردن کلید F5 در ویندوز صفحه را رفرش کنید. اگر صفحه بارگذاری شد نشاندهنده این است که مشکل از طرف سیستم شما بوده و نیازی به عیبیابی نیست.
2. پاک کردن حافظه cache و cookie مرورگر
اگر بعد از Reload صفحه ارور http 500 رفع نشد، این احتمال میرود که مرورگرتان فایلهای معیوبی در حافظه کش و کوکی خود جای داده است. ریلود صفحه این فایلها را پاک نخواهد کرد به همینخاطر بایستی خودتان آنها را پاک کنید.
اگر بعد از پاک کردن حافظه cache و cookies مرورگر مشکل برطرف نشد میتوانید از مرورگر دیگری به وبسایت متصل شوید تا ببینید صفحه وبسایت بالا میآید یا خطای سرور 500 المنتور همچنان پابرجاست. بعنوان مثال اگر از کروم استفاده میکردید این بار فایرفاکس را امتحان کنید.
3. تغییر شبکه اینترنت
در صورتیکه اعمال بالا خطا را رفع نکردند احتمال دارد که ارور بر روی کل شبکه اینترنتی که استفاده میکنید رخ دهد. برای تشخیص این امر، از سرویس اینترنت متفاوتی به وبسایت وصل شوید. مثلا اگر با وای فای خانه وصل میشدید این بار از داده موبایل استفاده کنید.
رفع ارور 500 Internal Server از سمت وبسایت
در بهترین حالت، روشهایی که گفته شد میتوانند مشکل را حل کنند. اما پابرجا بودن مشکل دو پیام را میرساند: مشکل از سمت سرور وبسایت است و مجبوریم نگاه عمیقتری به ریشه مشکل بیاندازیم. بعنوان صاحب وبسایت یا یک وبمستر راههایی برای کشف و حل سرور ارور 500 وجود دارد که به 9 مورد اشاره کردهایم:
1. Error Logs وبسایت را بررسی کنید
در بیشتر مواقع فایلها و اسکریپتهایی که به درستی تنظیم نشدهاند دلیل بروز خطا در وبسایتاند. Error Logs میتواند به شما در حل مشکلات پیشآمده یاری رساند. بطور معمول در کنترل پنل وبسایت به این رکورد دسترسی دارید.
در هر کنترل پنلی قسمتی که باید در آن به دنبال Error Logs باشید متفاوت است. برای مشاهده Error Log در سی پنل به روش زیر اقدام کنید:
وارد سی پنل شوید.
در قسمت Metrics به بخش Errors بروید.
در قسمت مشخص شده 300 خطایی که در سرور روی دادهاند با اطلاعاتی از جمله تاریخ و زمانی که خطا ثبت شده، نوع خطا، IP بازدیدکننده و Location ارور بصورت لیست قابل نمایش است. از طریق این اطلاعات میتوانید سرنخهایی از منبع مشکل بدست آورید.
توجه داشته باشید که ارورهای مرتبط با سرور وبسایت در این بخش بایگانی میشوند. خطاهای مربوط به PHP در فایل php_errorlog نگهداری میشوند.
2. سطح دسترسی یا Permissions فایلها و پوشهها را Reset کنید
از دیگر دلایل بروز ارور 500 Internal Server در سایت، تخصیص سطح دسترسی نامناسب به پوشهها و فایلها است. به عنوان مثال اگر مجوز فایل یا پوشهای اجازه دسترسی به پیج خاصی از وبسایت را به کاربر ندهد کاربر قادر به بازدید آن صفحه نخواهد بود.
Permissions یا سطح دسترسی استاندارد برای فایلها 644 و برای پوشهها 755 است. بهتر است Permissions را ریست کرده و یا اقدام به تغییر دسترسی فایلها در سی پنل کنید.
3. ورژن PHP را تغییر دهید
ورژن نامناسب PHP وبسایت میتواند باعث time out شدن متون PHP و بروز ارور شود. در نتیجه ممکن است با خطای 500 در وبسایت روبرو شوید. ورژن PHP سایت را به یک نسخه جدیدتر یا قدیمیتر سوئیچ کنید.
اگر مشکل رفع شد وبسایت را در ورژنی که روی آن سوئیچ کردهاید نگهدارید.
4. فایل htaccess. را بررسی کنید
یکی از دلایل رایج بروز ارور http error 500 وجود مشکل در فایل htaccess. است. این فایل علاوه بر ارور 500 میتواند باعث بروز ارورهای دیگری نظیر ارور 403 در وبسایت نیز باشد.
چنانچه فایل htaccess. معیوب یا حاوی خطاهای syntax (یا نحوی) بوده و یا پوشه root به نادرستی برایش تعریف شده باشد نتیجهاش بالا نیامدن وبسایت با نمایش خطای 500 Internal Server خواهد بود.
با وجود اینکه هر یک از سه مشکل بالا را میتوان بصورت جداگانه رفع کرد، راهحل زیر هر 3 مشکل را حل میکند.
ابتدا از سایت یک فایل بکاپ تهیه کنید. سپس جهت بررسی و حل این مشکل، از طریق پروتکل SFTP یا اتصال SSH وارد وبسایت شوید.
بعد از پیدا کردن فایل htaccess. آن را به 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
وبسایت را reload کنید. چنانچه مشکل از فایل htaccess بوده باشد حل خواهد شد. ضمنا پاک کردن فایل htaccess_old. را فراموش نکنید.
5. Database و Credentials (اعتبارنامه) را تعمیر و بررسی کنید
هشتمین راهحل، رفع هرگونه عیبی در دیتابیس یا Credentials آن است. در صورت بروز این مشکل وبسایت قادر به برقراری ارتباط با دیتابیس نخواهد بود.
برای رفع مشکل پیشآمده در Database میتوانید وبسایت را به نسخه پشتیبانی که قبلا تهیه کردهاید برگردانید. همچنین اگر وبسایت وردپرسیتان به دیتابیس وصل نمیشود باید اعتبارنامه یا Credentials وبسایت را چک کنید تا صحیح باشند.
در صورتیکه به داشبورد وردپرس دسترسی ندارید از طریق ارتباط SFTP به وبسایت متصل شوید. در پوشه web/content فایل wp-config.php را بیابید.
روی فایل راست کلیک و گزینه Edit را انتخاب کنید.
اکنون فایل به صورت یک فایل متنی باز خواهد شد. در بین خطوط کدها، خط پایین عبارت MySQL Database username حاوی نام کاربری و خط پایین عبارت MySQL Database Password حاوی رمز عبور این کاربر است. دقت کنید که این پارامترها داخل ‘ ‘ قرار گرفتهاند.
اکنون میتوانید از صحت این اطلاعات مطمئن شده و در صورت نیاز آنها را تغییر دهید.
6. افزونههای وبسایت وردپرسی را غیرفعال کنید
plugin یا افزونهای که به درستی پیکربندی نشده باشد میتواند موجب ایجاد ارور 500 Internal Server در وردپرس بشود. پروسه استاندارد حل این مشکل بدین صورت است که یک به یک افزونهها را غیرفعال کنیم تا بالاخره افزونهای که باعث رخ دادن مشکل شدهاست را بیابیم.
- در شرایطی که به بخش ادمین وردپرس دسترسی دارید:
به قسمت plugins رفته، گزینه Installed plugins را انتخاب و از منوی کشویی Bulk actions گزینه Deactivate را انتخاب کنید. سپس مربع مقابل Plugin را تیک بزنید و روی Apply کلیک کنید تا تمامی افزونهها غیرفعال شوند.
وبسایت را ریلود کنید. اگر مشکل 500 Internal Server حل شده است به قسمت افزونهها برگردید. پلاگینها را یکی یکی فعال و سایت را ریلود کنید تا بالاخره افزونهای که باعث بروز خطای سرور 500 شده را بیابید.
سپس میتوانید با ارائهدهنده افزونه برای رفع مشکل ارتباط بگیرید یا یک تیکت در repository وردپرس ثبت کنید تا پاسخی برای حل مشکل دریافت کنید. در صورت امکان با حذف افزونه و جایگزینی آن با plugin مشابه نیز مشکل حل خواهد شد.
- در شرایطی که به بخش ادمین وردپرس دسترسی ندارید:
رایجترین راه حلی که در این مواقع پیشنهاد میشود تغییر نام پوشه نرمافزارها است. در این روش احتمال بروز خطای دیگری در آینده وجود دارد. به همین دلیل پیشنهاد میکنیم تا از طریق دیتابیس نسبت به غیرفعال کردن افزونهها و رفع ارور 500 اقدام کنید.
برای جلوگیری از پاک شدن اطلاعات دیتابیس یک نسخه پشتیبان از آن تهیه کنید. با جستجو در سی پنل، به قسمت php MyAdmin وبسایت خود بروید و روی گزینه wordpress در سمت چپ صفحه کلیک کنید.
در سمت راست و در ستون Table ردیف wp_options را پیدا و روی آن کلیک کنید. حال در صفحه جدید در ستون option_name اسکرول کنید تا ردیف active_plugins را بیابید.
در سمت راست این ردیف و در ستون option_value دنبالهای از کاراکترها را خواهید دید که حاوی تمامی افزونههای فعال شماست.
به سمت چپ اسکرول کنید و گزینه Edit را بزنید.
برای امنیت بیشتر این String یا دنبالهی کاراکترها را کپی و در جایی مانند نرمافزار NotePad ذخیره کنید. تنها تغییری که برای غیرفعال کردن افزونهها باید انجام دهیم، وارد کردن کاراکترهای زیر بهجای کارکترهای قبلی است:
a:0:{}
در همین صفحه و در سمت راست پایین روی گزینه Go کلیک کنید تا تغییرات ذخیره شود.
این کد به وردپرس میگوید که افزونه فعالی در وبسایت وجود ندارد و به همین راحتی تمامی افزونهها غیرفعال شده و دسترسی شما به داشبورد وردپرس وبسایت برقرار میشود.
اکنون با فعال کردن یک به یک افزونهها و Reload وبسایت به آسانی قادر به تشخیص افزونه معیوب هستید. بعد از پیداکردن افزونه با سازنده آن ارتباط برقرار کنید یا با ثبت تیکت در repository وردپرس نسبت به رفع ارور 500 Internal Server اقدام کنید.
7. تغییر theme قالب وبسایت
قالبی که به درستی پیکربندی نشده باشد به بروز انواع خطاها از جمله سرور ارور 500 ختم خواهد شد. برای تغییر قالب از طریق دیتابیس لازم است که آن را با یک قالب دیگر جایگزین کنیم. بطور معمول ارور http error 500 دسترسی شما به داشبور وردپرس را قطع میکند. در این صورت به روش زیر عمل کنید:
قبل از هر اقدامی نسبت به بکاپ گرفتن از سایت در سی پنل اقدام کنید.
به قسمت PHPMyAdmin وبسایت خود بروید. در منوی سمت چپ دیتابیس وبسایت خود و wordpress را انتخاب کنید.
در ستون اول جدولی که باز میشود به دنبال فایلی بگردید که به پسوند “optionsـ” ختم شده است و روی آن کلیک کنید. این فایل vmf_options نام دارد که در دیتابیس شما شاید پیشوند دیگری داشته باشد.
در لیستی که باز میشود در قسمت Number of rows عدد 50 را وارد کنید و سپس در میان ردیفها به دنبال دو ردیف template و stylesheet بگردید.
روی دکمه Edit در مقابل هر یک از دو ردیف بالا کلیک کنید. سپس مانند روش قبلی مقدار option_value هر دو را به نام قالب جدیدی که انتخاب کردهاید تغییر دهید. برای مثال اگر میخواهیم قالب Twenty Twenty-Two را روی سایت اعمال بکنیم، عبارت twentytwentytwo را در فیلد option_value وارد میکنیم.
روی دکمه Go کلیک کنید تا تغییرات ذخیره شوند.
حتما این کار را برای هر دو ردیف template و stylesheet انجام دهید. میتوانید از طریق محتویات پوشه wp-content/themes و قسمت Site Tools -> File Manager کنترل پنل نام قالبهای موجود بر روی وبسایتتان را ببینید.
بعد از تغییر قالب اگر خطا رفع شد، به احتمال بسیار زیاد خطایی در بخش قالب وبسایت پیش آمده که منجر به پیدایش ارور 500 Internal Server شده است.
8. حافظه PHP وبسایت را افزایش دهید
scriptهایی که فضایی بیشتر از حافظه اختصاص داده شده به scriptهای PHP را اشغال میکنند میتوانند علت نمایش عبارت “500 Internal Server” بر روی صفحه هر وبسایتی باشند. مقدار این حافظه بطور پیشفرض بر روی 32 مگابایت تنظیم شدهاست.
با روشی که در ادامه معرفی میکنیم میتوانید مقدار این حافظه را افزایش دهید.
در این روش با استفاده از پلاگین رایگان file manager نسبت به افزایش حافظه PHP اقدام میکنیم. پس از نصب و فعالسازی این افزونه وارد آن شوید و به دنبال فایل wp-config.php بگردید.
روی آن راست کلیک و گزینه Code Editor را انتخاب کنید. در پنجره بازشده بدنبال خط زیر بگردید:
/* That’s all, stop editing! Happy publishing. */
کد زیر را یک خط بالاتر از آن جای داده و گزینه Save را بزنید:
define( 'WP_MEMORY_LIMIT', '2048M' );
حافظه PHP وبسایت شما با موفقیت افزایش یافت. همچنین با توجه به هاست خود، در کد بالا بجای عدد 2048 هر مقداری را که برای اختصاص به حافظه PHP در نظر دارید میتوانید قرار دهید.
9. وبسایت را از یک نسخه پشتیبان Backup بازنشانی کنید
در آخرین روش از 12 روش کاربردی رفع ارور 500 Internal Server در سایت، در شرایطی که هیچیک از راهکارهای بالا ارور 500 Internal Server را رفع نکرد وبسایت خود را از یک Backup بازنشانی یا Restore کنید.
این کار وبسایت شما را به حالتی که هنگام Backup گرفتن بود میبرد و تمام تغییرات اعمالی از آن زمان به بعد را به حالت قبلی بازمیگرداند.
سخن آخر
ارور 500 Internal Server از ناخوشایندترین ارورها برای هر وبمستری است چرا که علت خطا را نمایان نمیکند و به این امر را به عهده وبمستر واگذار میکند. از طرفی به شدت میتواند تبعات منفی برای نمره سئوی سایت به همراه داشتهباشد.
پابرجا بودن ارور میتواند نشانهای از مشکلات تخصصیتر باشد که برای رفع به دانش فنی نیازمند است. در دیگر موارد، وجود فایلهای با حجم بالا در وبسایت میتواند http error 500 را پدید آورد.
چنانچه ارور 500 Internal Server همچنان پابرجاست بهتر است اول با ارائه دهنده هاست خود تماس گرفته و سپس از یک متخصص برای رفع مشکل پیشآمده کمک بگیرید چون راهحلهایی که در این مقاله بیان کردیم عموما این ارور را رفع میکنند.