هاست

آموزش رفع خطای Http 500 Internal Server Error

خطای This Site Isn’t Working که گاها با کد خطای “HTTP 500” نیز شناخته می‌شود، از جمله خطاهای وابسته به سمت سرور است که در موارد مختلف می‌تواند کاربران و مدیران وب‌سایت را به یک اندازه درگیر کند. ارور «HTTP 500 Internal Server» یک خطای عمومی است که می‌تواند به دلایل متعددی رخ دهد، به همین دلیل ممکن است بارها با آن مواجه شوید. در این مقاله از اصفهان هاست بلاگ، می‌خواهیم به توضیح ارور «HTTP 500» و روش‌های رفع آن بپردازیم.

خطای «HTTP 500 Internal Server Error» به چه معناست؟

خطای HTTP 500 که به عنوان «خطای داخلی سرور» نیز شناخته می‌شود، یک کد وضعیت HTTP رایج است که به وجود مشکلی در سمت سرور وب اشاره دارد. هنگامی که با این ارور مواجه می‌شوید، به این معناست که سرور با شرایط غیرمنتظره یا مشکلی در پیکربندی روبرو شده است که مانع از اجرای درخواست ارسال‌شده توسط مرورگر یا کلاینت می‌شود.

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

دلایل رایج مواجه شدن با خطای Http Error 500

اگرچه تعریف این خطا نشان می‌دهد که مشکل از سمت سرور است، اما تجربه ثابت کرده که همیشه این‌گونه نیست! برخی از مشکلات رایجی که می‌توانند باعث ایجاد این خطا شوند عبارت‌اند از:

  • وجود مشکلات مختلف در کش مرورگر که می‌تواند به دلایل متعددی ایجاد شده باشد.
  • مشکلات موقت اتصال
  • خطاهای نگارشی یا قوانین نادرست در فایل htaccess وب‌سایت
  • مجوزهای نادرست فایل‌ها و پوشه‌ها
  • انتخاب نسخه نادرست PHP برای وب‌سایت
  • وجود مشکلات فنی در فایل htaccess
  • وجود ایرادات فنی در پایگاه داده وب‌سایت
  • مشکلات مربوط به قالب‌ها و افزونه‌های وردپرس
  • اتمام حافظه PHP وب‌سایت (منظور پُر بودن حافظه RAM هاست شماست)
  • وجود مشکلات فنی یا کم‌وکسری در فایل‌های هسته وردپرس
  • وجود فایل‌های اجرایی خیلی بزرگ در وب‌سایت که روند پاسخگویی سرور را با مشکل همراه می‌کنند.
  • مشکلات مربوط به سرور MySQL پیاده‌سازی شده بر روی سرور اصلی هاست اشتراکی

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

چرا خطاهای سری 500 (5XX) باید به سرعت برطرف شوند؟

اولین و شاید ساده‌ترین موضوعی که باعث می‌شود سریعا به فکر رفع خطای Http Error 500 بیفتید، این است که وب‌سایت شما عملا در دسترس نیست و یک یا چندین صفحه از وب‌سایت شما برای بازدیدکنندگان وب‌سایت قابل مشاهده نیستند!

متاسفانه باید اشاره کنیم که بازدیدکنندگان دنیای وب حافظه بسیار خوبی دارند و تنها کافیست که یک یا چند بار به وب‌سایت شما سر بزنند و ببینند که وب‌سایت شما عملکرد مناسبی ندارد. پس از آن هرچقدر هم که بر روی سئو سایت خود کار کنید، هیچ فایده‌ای نخواهد داشت، چراکه کاربران بر روی لینک‌های یک سایت معیوب کلیک نمیکنند!

روش حل خطای Http Error 500 برای مدیران وب‌سایت‌ها

لاگ‌های (Log) وب‌سایت خود را مشاهده و بررسی کنید.

در این صفحه می‌توانید کلیه لاگ‌های حیاتی و مهم مربوط به وب سرورهای Apache و Nginx را مشاهده کنید. هر خطا با چندین قطعه اطلاعات کلیدی ثبت می‌شود:

  • تاریخ و زمان وقوع خطا
  • توضیحات مربوط به خطا
  • اطلاعاتی درباره اینکه کدام پوشه یا فایل ممکن است باعث ایجاد خطا شده باشد.

در تصویر زیر می‌توانید نمونه‌ای از لاگ‌های سرویس میزبانی را مشاهده کنید که بیانگر وجود خطایی در فایل “htaccess” است.

این گزارش نشان می‌دهد که مشکل از فایل “htaccess.” در پوشه Root وب‌سایت (همان public_html) است. همچنین مشخص می‌کند که خطا به دلیل نبود یک آرگومان در دستور “” رخ داده است، که به معنای وجود یک خطای نگارشی سینتکسی (Syntax Error) است.

به خاطر داشته باشید که “Error log” فقط خطاهای مربوط به پیکربندی سرویس میزبانی و وب سرورهای آپاچی و انجینکس را ثبت می‌کند و خطاهای ناشی از تنظیمات نادرست PHP و اسکریپت‌ها ثبت نمی‌شوند، زیرا این خطاها در سطح برنامه رخ می‌دهند.

ورژن PHP وب‌سایت خود را تغییر دهید.

استفاده از نسخه نادرست PHP در وب‌سایت شما ممکن است باعث شود که اسکریپت‌های PHP دچار تأخیر یا خطاهای جدی شوند؛ در نتیجه، وب‌سایت ممکن است ارور «HTTP 500» را بازگرداند.

برای رفع این مشکل، نسخه PHP را به یک نسخه قدیمی‌تر یا جدیدتر تغییر دهید. پیشنهاد ما تغییر به نسخه‌هایی همچون 7.2، 7.4 یا 8.1 است. اگر با این تغییر، خطا ناپدید شد، نشان‌دهنده این است که نسخه قبلی نادرست بوده است. در این حالت، وب‌سایت را بر روی نسخه جدید نگه دارید و با یک متخصص جهت پیاده‌سازی هماهنگی‌های لازم جهت اجرای صحیح تمامی بخش‌های وب‌سایت تماس بگیرید.

سطح دسترسی دایرکتوری‌ها و فایل‌ها را تغییر دهید.

یکی دیگر از مشکلات رایجی که می‌تواند باعث ایجاد ارور «HTTP 500» شود، تنظیمات نادرست مجوزهای فایل‌ها و دایرکتوری‌های (پوشه‌ها) وب‌سایت شماست. اگر این مجوزها به‌گونه‌ای تنظیم شده باشند که بازدیدکنندگان نتوانند به فایل‌ها و پوشه‌های حیاتی دسترسی پیدا کنند، ممکن است با صفحه خطا مواجه شوند.

اعمال تغییرات بر روی سطح دسترسی فایل‌ها نیاز به یک دانش حداقلی دارد؛ چراکه شما با یک تغییر اشتباه می‌توانید دروازه‌های وب‌سایت خود را بر روی بسیاری از تهدیدها و سواستفاده‌گران باز کنید.

افزونه‌های وردپرس را غیرفعال کنید.

یک افزونه با تنظیمات نادرست نیز می‌تواند باعث بروز ارور HTTP 500 در وردپرس شود. روش استاندارد برای حل این مشکل، غیرفعال کردن افزونه‌ها به‌صورت تک‌به‌تک است تا افزونه مشکل‌ساز شناسایی شود. پیشنهاد ما این است که در این مسیر از جدیدترین افزونه نصب‌شده شروع کنید و رفته رفته به سمت افزونه‌های قدیمی تر بروید. لازم است اشاره کنیم که باید پس از غیرفعال کردن هر افزونه، در صورت استفاده از افزونه‌های کش مثل Wp Rocket یا Cache Litespeed، کش وب‌سایت خود را پاک کنید و محددا صفحه موردنظرتان را رفرش نمایید.

اگر خطا تنها در قسمت «فرانت‌اند» رخ می‌دهد و شما هنوز به داشبورد ادمین وردپرس دسترسی دارید، می‌توانید افزونه‌ها را از بخش “Plugins یا افزونه‌ها” غیرفعال کنید؛ اما در صورتی که در زمان مراجعه به داشبورد وردپرس نیز با خطای HTTP 500 مواجه می‌شوید، لازم است که افزونه‌ها را از طریق بخش مدیریت فایل‌های سرویس میزبانی یا از طریق دیتابیس غیرفعال نمایید.

پوسته وردپرس خود را تغییر دهید.

چنانچه یک قالب وردپرس به درستی کدنویسی نشده باشد، می‌تواند باعث بروز خطای “500 Internal Server” در وردپرس شود. برای بررسی اینکه آیا قالب عامل این خطاست یا خیر، باید آن را با قالب دیگری جایگزین کنید.

معمولاً می‌توانید قالب را از طریق داشبورد وردپرس وب‌سایت تغییر دهید. اما در بسیاری از موارد، ارور HTTP 500 ممکن است مانع از ورود شما به داشبورد شود.

افزایش محدودیت حافظه PHP وب‌سایت

ارور “HTTP 500” ممکن است به دلیل اجرای اسکریپت‌های PHP باشد که از محدودیت حافظه وب‌سایت فراتر رفته‌اند. برای حل این مشکل لازم است که با اعمال تغییراتی، مقدار محدودیت حافظه PHP را افزایش دهید. برای این کار می‌توانید از آموزشی که پیش از این برای شما آماده کرده‌ایم استفاده نمایید.

سایت خود را از نظر وجود فایل‌های حجیم بررسی کنید.

یکی از دلایل رایج برخورد با خطای HTTP 500، وجود یک فایل بسیار بزرگ در وب‌سایت است. اسکریپت‌های بسیار حجیم، Cronjob هایی با پیچیدگی‌های بالا و مصرف زیاد منابع سرویس میزبانی و همچنین فایل‌های لاگ (Log) حجیم از جمله مواردی هستند که می‌توانند منجر به بروز خطای HTTP 500 در وب‌سایت شما شوند.

فایل‌های وب‌سایت خود را از طریق SSH ،FTP یا File Manager بررسی کنید تا فایل مشکل‌ساز را پیدا کنید. این فایل‌ها معمولاً لاگ‌هایی با خطاهای PHP هستند.

وجود خطای نحوی در فایل htaccess

یکی از دلایل رایج ارور “Internal Server Error” وجود مشکل در فایل “htaccess” است. اگر این فایل خراب باشد، مسیر روت (Root) وب‌سایت را به شکل اشتباهی تعریف کند و یا دارای خطای نحوی (Syntax error) باشد، معمولاً صفحه ارور HTTP 500 نمایش داده می‌شود.

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

<2022-05-17 14:32:40 UTC [apache][core:alert] [pid 68451] [client 35.214.177.225:57966] /home/user/www/netafrazblog.com/public_html/.htaccess: <IfModule> directive requires additional arguments

برای بررسی این خطا لازم است که به سراغ فایل htaccess برویم. این فایل در روت دایرکتوری وب‌سایت شما یعنی دایرکتوری “public_html” قرار دارد. برای دسترسی به این فایل لازم است که از طریق ابزار مدیریت فایل پنل دایرکت ادمین، به روت دایرکتوری وب‌سایت مراجعه کنید و نهایتا با دو بار کلیک بر روی این فایل، اقدام به ویرایش فایل htaccess نمایید.

اگر فایل لاگ را به دقت مطالعه کنید، متوجه خواهید شد که خطا مربوط به آرگومان “<IfModule>” می‌باشد و گفته‌شده که خطای نحوی در این دستور مشاهده شده است.

مطابق با تصویر بالا، با مشاهده فایل htaccess متوجه شدیم که خطای نحوی در تگ پایانی آرگومان “” وجود دارد که با تغییر آن این خطا برطرف خواهد شد. در ادامه می‌توانید تغییر اعمال شده را مشاهده کنید.

خطای نحوی:

<IfModule>...<IfModule>

اصلاح‌شده:

<IfModule>...</IfModule>

پس از افزودن اسلش، تغییرات را با کلیک روی آیکن فلاپی (Save) ذخیره کنید. حال وب‌سایت را دوباره بارگذاری کنید. با این اصلاح، باید وبسایت به‌درستی بارگذاری شود و دیگر شاهد خطای Http Error 500 نباشید.

تعریف اشتباه Root Directory در فایل htaccess

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

مثال:
در مثال زیر،در شرایطی که وب‌سایت در روت دایرکتوری public_html میزبانی می‌شود،مسیر dev/ به اشتباه در RewriteBase تعریف شده است:

RewriteBase /dev

این کد به سرور دستور می‌دهد تا وب‌سایت را از پوشه‌ای با نام “public_html/dev” بارگذاری کند. از آنجا که این پوشه وجود ندارد، صفحه وب‌سایت با ارور «Internal Server Error» مواجه می‌شود و نهایتا مرورگر خطای HTTP 500 را به کاربر نمایش می‌دهد.

برای رفع مشکل، مسیر زیرپوشه را از RewriteBase حذف کنید تا کد به شکل زیر درآید:


# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} ^/wp-content/uploads/
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . /index.php [L]

# END WordPress

این کد پیش‌فرض وردپرس برای تعریف دایرکتوری ریشه وب‌سایت است. تغییرات را در File Manager ذخیره کنید و وب‌سایت را دوباره بارگذاری کنید. چنانچه خطای HTTP 500 بر اثر تعریف اشتباه روت دایرکتوری در فایل htaccess مشاهده شده باشد، این ارور نباید دیگر ظاهر شود.

بازسازی فایل htaccess

چنانچه به کمک راهکارهای قبلی نتوانستید خطای Http Error 500 را برطرف کنید اما همچنان حدس می‌زنید که خطای موجود از فایل htaccess سرچشمه می‌گیرد، می‌توانید اقدام به بازسازی فایل htaccess خود نمایید. برای این کار لازم است که مراحل زیر را به ترتیب انجام دهید.

    1. تغییر نام فایل htaccess

  •  به File Manager سرویس میزبانی خود بروید و فایل htaccess را انتخاب کنید.
  •  نام آن را به هر نامی مثل htaccess_old تغییر دهید.
  •   یک فایل جدیدبا نام “htaccess.” ایجاد کنید.

    2. اقدامات لازم در پنل وردپرس

  • وارد داشبورد وردپرس شوید.
  • به بخش Settings (تنظیمات) بروید و Permalinks (پیوندهای یکتا) را باز کنید.
  • نهایتا بدون اعمال هیچ تغییری، تنها باید روی دکمه “Save Changes” در پایین این صفحه کلیک کنید. با این کار، وردپرس یک فایل htaccess جدید با کد پیش‌فرض و مطابق با تنظیمات وب‌سایت شما برایتان ایجاد می‌کند.

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

بازیابی نسخه پشتیبان وب‌سایت

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

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

روش حل خطای Http Error 500 برای بازدیدکنندگان وب‌سایت

برخلاف مدیران وب‌سایت که به علت دسترسی به فایل Log سرور و همچنین فایل‌های وب‌سایت، راهکاریهای مختلف و گاها پیچیده‌ای را برای حل مشکل پیش رو داشتند، بازدیدکنندگان وب‌سایت می‌توانند مسیر بسیار ساده‌ای را برای رفع مشکل Http Error 500 پیش بگیرند. در ادامه از نگاه بازدیدکنندگان وب‌سایت به خطای Http Error 500 نگاه می‌کنیم و بررسی می‌نماییم که کاربران با توجه به امکانات در دسترسشان به چه شکل می‌توانند خطای مربوطه را برطرف نمایند.

صفحه را رفرش (Refresh) کنید.

شاید خیلی ساده به نظر برسد، اما باید بگوییم که گاها خطای Http Error 500، به سادگی و تنها با یک بار رفرش کردن صفحه برطرف می‌شود!

حافظه کش (Cache) و کوکی‌های مروگر خود را پاک کنید.

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

مرورگر و یا اینترنت خود را تغییر دهید.

در اولین گام پیشنهاد می‌کنیم که با استفاده یک مرورگر دیگر، برای باز کردن صفحه مدنظر خود اقدام نمایید. گاها مشاهده می‌شود که بر اثر اختلال در سیستم مورد استفاده کاربر و یا بر هم خوردن کانفیگ مرورگر، یک صفحه با خطای Http Error 500 مواجه می‌شود، در حالی که همان صفحه در مرورگر دیگر به خوبی باز می‌شود. چنانچه با این راهکار هم مشکل برطرف نشد، نوبت به تغییر اینترنت مورد استفاده می‌رسد.

مشکلات اتصال که باعث ایجاد ارور “HTTP 500” می‌شوند، ممکن است در کل شبکه اینترنت شما رخ دهند. در این صورت، احتمالاً این خطا را روی هر دستگاهی که به این شبکه متصل است مشاهده خواهید کرد.

همچنان با خطای Http Error 500 مواجه می‌شوید؟

اگر با انجام کلیه اقدامات گفته شده همچنان با خطای Http Error 500 مواجه می‌شوید، با توجه به نقش کاربری خود می‌توانید دو راهکار مختلف را پیش رو بگیرید.

بازدیدکننده وب‌سایت: اگر شما بازدیدکننده وب‌سایت هستید و با انجام کلیه اقدامات گفته شده در بخش مربوطه همچنان با خطای Http Error 500 مواجه می‌شوید، باید بدانید که به احتمال بالا مشکل از سمت شما نیست و خطای HTTP 500 یا همان خطای “This Site Isn’t Working” ارتباطی به شما ندارد. از همین رو اقدامی از سمت شما قابل انجام نیست و نهایتا می‌توانید با مدیر وب‌سایت جهت بررسی این موضوع تماس بگیرید. پیشنهاد می‌کنیم که مقداری منتظر بمانید و در بازه‌های زمانی مختلف از سایت دیدن نمایید؛ چراکه مدیر وب‌سایت هم همچون شما از این موضوع مطلع است و قاعدتا به دنبال رفع این مشکل می‌باشد.

مدیر وب‌سایت: اگر شما مدیر وب‌سایت هستید، به عنوان آخرین راهکار می‌بایست به ارائه‌دهنده سرور یا سرویس میزبانی خود مراجعه کنید. همانطور که در طول این مقاله اشاره کردیم، در اکثر مواقع خطاهای سری 5XX ناشی از سرور وب‌‎سایت هستند که هیچکس به خوبی یک تیم حرفه‌ای نمی‌تواند آن‌ها را شناسایی و برطرف نماید.

سخن پایانی

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

نهایتا چنانچه نتوانستید با استفاده از راهکارهای ارائه‌شده در این مقاله نسبت به برطرف کردن خطای HTTP 500 اقدام نمایید، می‌توانید در هر لحظه با همکاران ما در تیم پشتیبانی ارتباط برقرار کنید، مشکل خود را مطرح نمایید و حل مشکل را به کارشناسان فنی اصفهان هاست واگذار کنید.

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

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

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