HTTP Error 500 - Internal Server Error explained

What a 500 error is and how to fix it

HTTP error 500 is a generic HTTP status code which occurs when the web server encounters a problem that prevents it from returning the requested web page. The web server is unable to be more specific about the cause of the error. Also known as a 500 Internal Server Error, HTTP error 500 will be reported by your browser but the problem is with the website itself.

When the HTTP error 500 occurs, the web server will generate an internal error log, which will provide details of what caused the 500 error. Using these logs, the operators of the web server should be able to analyse the cause of the error and fix the internal server error.

How do you fix Internal Server Error 500?

The HTTP 500 error occurs on the web server and therefore this is usually resolved by fixes to it. It is not a web browser error. It is up to the operators of the web server to locate and analyse the errors within these logs, so that the exact cause of the internal server error can be established and fixed.

In some cases the cause of the HTTP 500 internal server error can be due to cached versions of the web site's code within the browser. This can sometimes causing an unexpected condition on the web server. For this reason, it is worth clearing the cached files within the web browser for the site reporting the HTTP error 500.

If you're the owner of the website, the first thing you should do when you encounter an HTTP error 500 is check the web server error logs. For example in the Apache2 web server a typical error log location would be in /var/log/apache2. Typically the file will be called error.log but it might be different if the web server has been configured with a different log file format. For Internet Information Services (IIS) the default location for the log files are in %SystemDrive%\inetpub\logs\LogFiles

HTTP Error 500.0 - Internal Server Error

Do you need help with Fixing HTTP Error 500?

Our web site monitoring service monitors your site for HTTP errors such as 500. Please contact us (email preferred) whenever you encounter a HTTP 500 error on your CheckUpDown account. We can the liaise with your ISP and the vendor of the web server software so they can trace the exact reason for the 500 internal server error and help resolve it.

IIS Specific HTTP 500 Errors

Microsoft's Internet Information Services (IIS) web server has more detailed error 500 messages:

500Internal server error.
500.0Module or ISAPI error occurred.
500.11Application is shutting down on the web server.
500.12Application is busy restarting on the web server.
500.13Web server is too busy.
500.15Direct requests for Global.asax are not allowed.
500.19Configuration data is invalid.
500.21Module not recognized.
500.22An ASP.NET httpModules configuration does not apply in Managed Pipeline mode.
500.23An ASP.NET httpHandlers configuration does not apply in Managed Pipeline mode.
500.24An ASP.NET impersonation configuration does not apply in Managed Pipeline mode.
500.50A rewrite error occurred during RQ_BEGIN_REQUEST notification handling. A configuration or inbound rule execution error occurred.
500.51A rewrite error occurred during GL_PRE_BEGIN_REQUEST notification handling. A global configuration or global rule execution error occurred.
500.52A rewrite error occurred during RQ_SEND_RESPONSE notification handling. An outbound rule execution occurred.
500.53A rewrite error occurred during RQ_RELEASE_REQUEST_STATE notification handling. An outbound rule execution error occurred. The rule is configured to be executed before the output user cache gets updated.
500.100Internal ASP error.

For more on IIS specific status codes see The HTTP status code in IIS 7.0, IIS 7.5, and IIS 8.0

Internal Server Error 500 in the HTTP cycle

Any client (e.g. your Web browser or our CheckUpDown robot) goes through the following cycle when it communicates with the Web server:

  1. Obtain an IP address from the IP name of the site (the site URL without the leading 'http://'). This lookup (conversion of IP name to IP address) is provided by domain name servers (DNSs).
  2. Open an IP socket connection to that IP address.
  3. Write an HTTP data stream through that socket.
  4. Receive an HTTP data stream back from the Web server in response. This data stream contains status codes whose values are determined by the HTTP protocol. Parse this data stream for status codes and other useful information.

HTTP error 500 occurs in the final step above when the client receives an HTTP status code that it recognises as "500".

HTTP Error 403

The Web server thinks that the HTTP data stream sent by the web browser was correct, but access to the resource identified by the URL is forbidden.


HTTP Error 404
Not Found

The Web server (running the Web site) thinks that the HTTP data stream sent by your web browser was correct, but simply can not provide the access to the resource specified by your URL.