An "Internal Server Error" is an error that's happened within the web server attempting to show you an HTML page. It's typically a server-side problem out of your control.
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator webmaster@******.com and inform them of the time the error occurred and anything you might have done that may have caused the error. More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
How is this resolved?
I’m very familiar with this error. I see it all the time when setting up or making changes to websites.
The good news? It’s not your fault.
The bad news? There’s probably nothing that you can do.
It’s the server’s problem
An internal server error is an error on the web server that you’re trying to access. That server is misconfigured in some way that prevents it from responding properly to what you’re asking it to do.
Think of it like the web’s version of a blue screen. Something went so wrong on the server that it couldn’t even tell you what the problem was.
Aside from informing the site owner (which may or may not be the webmaster email address that’s included in the error message), there’s probably nothing that you can do to resolve this problem. That’s because it’s not your problem. The person who is responsible for the website needs to fix it.
It’s still the server’s fault, but…
Now, there are scenarios where you might have caused this.
One issue might be if you saw a link in an email or webpage and rather than clicking on it, you copied and pasted the link in a web browser. If you accidentally didn’t select the entire link and left off a few important characters at the end, you might see this message.
Similarly, if you’re typing in a URL from a book or other place and don’t type it in exactly as it appears, you might see this message.
Errors in URLs can indeed cause errors.
To be clear, the server should be able to handle whatever you did cleanly and report any errors in some relatively useful way. If the server doesn’t and you get an Internal Server Error message, then that’s still the server’s fault.
There are some straws to grasp at
An internal server error happens when the server encounters a situation and it just doesn’t know how to handle it. An occasional source of these kinds of errors can be your browser. You can try these steps to see if they’ll help:
- Clear the browser cache
- Clear cookies
- Refresh the page (F5)
- Try a different browser
While it’s more than likely that these won’t work, there’s always a chance that they might. And they are simple and easy to try.
If you’re the webmaster…
So what if that’s you? What if you’re the webmaster?
Nine times out of 10, this error results from one of two very common errors:
- An error in a CGI script that caused it to fail or output an error message before it started producing valid HTML. It happens to me all the time if I have a syntax error in one of my Perl CGI scripts.
- A permissions issue attempting to access a CGI script. Depending on how your web server is configured, it’s not enough for the script to have “execute” permission; it must also be owned by the correct user and belong to the correct group. I can’t tell you what that should be because it varies widely from server to server (and even from site to site on the same server). My best recommendation is to look at the attributes of a script that’s working and copy that.
The format of the error described here is common for Apache web servers. That means that we can also look for common error logs. Once again, the location of these logs varies a great deal based on the specific web server configuration.
- access_log is the log of successful accesses. On a shared or virtual hosting server, there may be many of these: one per website, often with site-specific names or in site-specific locations on the server.
- error_log is the log of errors. On some hosts, there is an error log per site. On others, each site may have its own access_log, but there may only be a single error_log for the system.
- suexec_log is the log that most people forget. It deals with the permissions used to execute CGI and other scripts. When a CGI fails to execute because its ownership is wrong, the generic internal server error shows in the error log, but a more specific error detailing the permissions involved appears in this log.
The message: “Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument…” indicates that there was a second configuration error on the server.
When the web server encounters an error of any sort, the page that it displays to report the error is actually just another .html file stored on the server. This error means that trying to display the error page for the first error (the internal server error) actually generated a second error (also an internal server error, in your case).
And at that point, the server just gave up.