How to Fix a 500 Internal Server Error on cPanel Hosting
A "500 Internal Server Error" is one of the most alarming messages you can see on your own site, because it tells you almost nothing. The truth behind it is calmer than it looks: the server received the request, started to build your page, and then something in your own account stopped it partway. It is a fixable configuration problem far more often than it is a real outage โ and in most cases you can find the cause in a few minutes.
This is a practical, in-order checklist. Work down it and you will land on the culprit behind nearly every 500 error we see on shared and cPanel hosting.
First, read the actual error โ don't guess
The generic 500 page is deliberately vague so it never leaks details to visitors, but the real reason is written down for you. In cPanel, open Errors (under Metrics) to see the last few hundred lines of your error log. Reproduce the broken page, then refresh that log โ the freshest line, with a timestamp matching your visit, is your answer.
If you run WordPress or another PHP app, also switch on its own debug log. The single line you find here โ a file path, a function name, an "allowed memory size exhausted" โ turns the rest of this guide from guesswork into a direct fix. Never skip this step.
The number-one cause: a broken .htaccess
More 500 errors trace back to .htaccess than to anything else. It is a powerful little file in your site's root, and one stray line โ a directive your PHP handler doesn't support, a rule pasted from a tutorial for a different server, a caching plugin that wrote something invalid โ takes the whole site down.
To test it, rename the file to .htaccess.bak in cPanel's File Manager (turn on "Show Hidden Files" first) and reload your site. If the error clears, .htaccess was the problem. For WordPress, regenerate a clean one by visiting Settings โ Permalinks and clicking Save without changing anything. If you hand-edited it, the last block you added is almost certainly the offender.
File and folder permissions
Servers refuse to execute files that are writable by everyone, as a security measure โ so permissions that are too open cause 500s just as much as ones that are too closed. The safe defaults on shared hosting are 644 for files and 755 for folders, and scripts should never be set to 777.
If you have recently uploaded files by FTP, restored a backup, or changed permissions manually, reset them from File Manager. A folder sitting at 777 is both a security risk and a frequent 500 trigger.
PHP ran out of memory
If your error log says "Allowed memory size of โฆ bytes exhausted," a single request tried to use more RAM than its limit and was stopped mid-page. This is common on plugin-heavy sites, large imports, or image processing. Raising the limit is a valid short-term fix โ but a page that needs an unusually large amount of memory is usually telling you something is inefficient, so treat a sudden jump as a symptom worth investigating, not just a number to increase.
A plugin, theme, or a bad line of code
If the error started right after you installed or updated something, that something is your prime suspect. Deactivate the most recent plugin or switch to a default theme and test. If you can't reach the dashboard, rename the plugin's folder in File Manager to force it off. When your log points at a specific file and line, a recent edit โ a missing semicolon, an unclosed bracket, a function that no longer exists โ is often all it is.
A PHP version mismatch
Older applications and plugins can break on newer PHP, and modern code breaks on ancient PHP. If your log mentions an undefined function or a deprecated feature, open Select PHP Version (or MultiPHP Manager) in cPanel and try the version the software officially supports. On our servers you can switch versions per site in a couple of clicks, so this is quick to test both ways.
Still stuck? That's what we're here for
If you have read the error log, cleared .htaccess, checked permissions and versions, and the 500 persists, the cause may sit at a level you can't see from cPanel โ and there is no shame in that. Send us the exact line from your error log and the page that triggers it. Because we run our own servers, we can look at the layer below your account and tell you precisely what stopped the request, rather than guessing.
Got a 500 error you can't shake?
Send us the line from your cPanel error log and the URL that breaks. We'll tell you the exact cause and the smallest change that fixes it โ usually the same day.