What do 500, 403, 404 and 508 errors mean on my website?
The number tells you where the problem is. Find yours below.
| Code | Means | Where the problem usually is |
|---|---|---|
| 500 | Internal Server Error | Your site's code or configuration crashed |
| 403 | Forbidden | The server refused to show the file |
| 404 | Not Found | The file or page doesn't exist at that address |
| 508 | Resource Limit Reached | Your account hit its limits |
Find the error log first
For 500 and 403 errors, the log tells you the real cause.
- cPanel: Metrics → Errors. Shows the last messages from the web server. For PHP errors, also look for
error_logfiles insidepublic_htmlwith File Manager. - DirectAdmin: System Info & Files → Site summary & logs, then the domain's error log. Also check for
error_logfiles inpublic_html.
Read the newest lines. They name the file and often the line number.
500 Internal Server Error
Something on your site failed before a page could be produced. The server doesn't say what in the browser; the log does.
Common causes, most likely first
- A broken
.htaccessfile. One wrong line is enough. Rename.htaccessto.htaccess.oldin File Manager and reload. If the site returns, the file is the problem. Restore it line by line. On WordPress, resave Settings → Permalinks to rebuild it. - A PHP error. Read the
error_log. It names the file. On WordPress, it's usually a plugin or theme: rename that plugin's folder inwp-content/pluginsto disable it. - Wrong PHP version. Old code on a new PHP version, or the reverse. Switch versions in the control panel and reload. See How to change my PHP version and PHP settings.
- Wrong file permissions. Folders should be
755and files644. Files or folders set to777can cause a 500 error. Fix permissions in File Manager (right-click → Change Permissions). - PHP memory or execution limit hit. The log says "Allowed memory size exhausted" or "Maximum execution time exceeded". See How to change my PHP version and PHP settings.
403 Forbidden
The server found the address but refused to serve it.
Common causes
- No index file. If a folder has no
index.htmlorindex.php, the server refuses to list it and shows 403. Upload your files, or check they are inpublic_htmland not a subfolder. - File permissions too tight. Files need
644, folders755. A file set to600or a folder set to700is unreadable by the web server. - A
denyrule in.htaccess. Look for lines startingDeny from,Require, or an IP block. Remove what you don't recognise, or rename the file to test. - A security rule on the server blocked the request. Certain form submissions, URLs or uploads trigger the server's web application rules, which return 403. This is common with page builders and plugin settings that send code-like content. You can't change these rules yourself. Open a ticket with the exact URL and the time it happened.
- Your IP address is blocked. If everything on the domain, including the control panel, fails from your connection only, see My website works for others but not for me.
404 Not Found
The address is wrong, or the file isn't where the server is looking.
Common causes
- The file isn't there. Check the exact path in File Manager. Your main domain serves from
public_html; an addon domain or subdomain serves from its own folder, shown under Domains. - Capital letters. Linux servers are case-sensitive:
Photo.JPGandphoto.jpgare different files. Match the case in your links to the real file names. - WordPress pages give 404 but the home page works. The permalink rules are missing. In WordPress go to Settings → Permalinks and click Save Changes. If that fails, check that
.htaccessexists and is writable. - You just moved the site. DNS may still point to the old server, or the files went into the wrong folder. See How long does DNS propagation take?
- A Node.js or Python app on DirectAdmin. Most DirectAdmin servers run OpenLiteSpeed, which can't run apps. See My Node.js or Python app won't start or shows an error (503, 404, placeholder page).
508 Resource Limit Reached
Your hosting account hit one of its limits, and the server refused new requests until usage dropped.
The limits (defaults): 2 GB memory, 30 entry processes (requests being handled at the same moment), 90 processes. A 508 is almost always the entry processes limit: 30 requests were already running when the next arrived.
Check what happened
Open Resource Usage (cPanel) or Extra Features → Resource Usage (DirectAdmin) and look at the graphs for the time of the error. It shows which limit was hit and when.
Common causes
- Bots crawling the site. Dozens of requests a second from one crawler fill all 30 slots. Check the visitor logs (cPanel: Raw Access or Visitors) for repeated hits from one IP or user agent. Block them in
.htaccessor with a security plugin. - Slow pages. A page that takes 10 seconds holds a slot for 10 seconds. Uncached WordPress with heavy plugins is the usual case. Add page caching: on DirectAdmin servers use LiteSpeed Cache; on cPanel use a caching plugin.
- Cron jobs or scheduled tasks running every minute and overlapping.
- A plugin or script stuck in a loop. Check the error log for the same file repeating.
- Traffic outgrew the plan. If the site is healthy and simply busy, upgrade the plan.
Other codes you may see
| Code | Means | What to do |
|---|---|---|
| 502 / 503 | The app or backend didn't answer | For Node.js/Python apps, see My Node.js or Python app won't start or shows an error (503, 404, placeholder page). Otherwise check the status page and try again in a minute |
| 504 | Timed out waiting for the site | Usually a very slow script or database query. Check the error log and resource usage |
| 429 | Too many requests | You or a script hit a rate limit. Wait and slow down |
| Blank white page | A PHP error with error display off | Read the error_log. Treat as a 500 |
Still stuck?
Open a support ticket and include:
- The domain and the exact address that gives the error.
- The error code and a screenshot.
- The last 20 lines of the error log, copied from the control panel or
error_log. - Whether it happens on every page or only some.
- When it started, and what changed just before (update, upload,
.htaccessedit, PHP version, new plugin). - For a 508: the time it happened, so we can match it to the resource graphs.
Did this answer it?