“HTTP ERROR 500”

The server hit an error before WP could show your page. Get it back by hand first. Then add the free plugin: next time, its chat finds the cause.

Is your site down right now?

  1. Reload the page once, then open yoursite.com/wp-admin. If both show the 500, the whole site is down, not one page.
  2. Open the file manager in your host's control panel. In your site's main folder, rename .htaccess to .htaccess-off, then reload.
  3. Still down, and you edited wp-config.php lately? Open it in the same folder and undo that edit. One missing quote breaks every page.
  4. Still down? Open wp-content and rename the plugins folder to plugins-off. If the site now loads, a plugin is the cause.
  5. Still down? Ask your host to read the server's error log. Tell them when it broke and what you changed last.

CMSHands can't be installed into a site that won't load. These steps come first.

A person approves every repair. Install it before anything breaks.

Install it before it breaks

Needs WP 6.3 to 7.1 and PHP 8.0 or newer. What it installs

Needs WP 6.3 to 7.1, PHP 8.0 or newer, and an administrator login. One site per install.

The download is a plugin. Turning it on connects your site to cmshands.com and adds 3 small rescue files. Deleting the plugin removes them and everything it stored. What we send

Plugins are installed from a computer. Get the plugin here instead

  • No account, no password to share

What it means

“HTTP ERROR 500” means the server hit an error while building your page. So it sent back this error and no page.

  • A broken .htaccess file. It's a settings file for the server that plugins and hosts write to, and one bad line stops every page.
  • A typo in wp-config.php, the file that holds your database login and site settings. A missing quote or semicolon is enough.
  • A plugin or theme that crashed before WP could show its own error message. A recent update is the usual suspect.
  • Your site ran out of memory, or a page took longer than your host allows.
  • Your host moved to a newer PHP version (the language WP runs on; your host sets its version), and an older plugin can't run on it.
  • Wrong file permissions after a move or an upload, so the server isn't allowed to read your files.
  • A problem on the server itself, which only your host can see and fix.

What you see

In Chrome, the page says “This page isn’t working” and, under it, “HTTP ERROR 500”. Other browsers and hosts show “500 Internal Server Error” or a blank white page.

It's the same error in different words. The server failed, not your browser or your internet.

On our test site (a WP site we run to try every task before we write about it), one typo in wp-config.php sent every page here. That included the login page and the dashboard (the screens you log in to at yoursite.com/wp-admin).

Your posts and pages are still in your database. The server stops before it can show them.

How to find the cause

Start with what changed last: a plugin update, a new plugin, an edit to a file, or a move to a new host. A 500 usually starts right after it.

The server's error log

Your host keeps a log of every error. Look in your control panel for a page called Errors, Error log or Logs.

Read the last lines, from the time the site broke. They name the file and the line that failed.

A line with “PHP Parse error” and wp-config.php points to your settings file. A line that names .htaccess points to that file.

The WP debug log

If the server's log names nothing useful, ask WP to write its own. This only works when wp-config.php itself is fine.

Open wp-config.php in your site's main folder with the file manager. Above the line with “That's all, stop editing!”, add these 3 lines:

define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );

Reload the broken page, then open wp-content/debug.log. The last “PHP Fatal error” line ends with a file path. The folder after plugins or themes in that path is what crashed.

When you're done, set WP_DEBUG back to false. Anyone who guesses the log's address can read it.

How to fix each cause by hand

A broken .htaccess file

File names that start with a dot are hidden. Turn on the file manager's setting that shows hidden files, then rename .htaccess to .htaccess-off.

If your site loads, log in and open Settings › Permalinks. Press Save Changes without changing anything, and WP writes a fresh .htaccess.

If WP can't write the file, that screen shows the lines to paste into a new one. No .htaccess at all? Your host's server doesn't use one, so skip this.

A typo in wp-config.php

Open wp-config.php and look at the lines you or a plugin changed last. The error log gives the line number.

A missing quote, bracket or semicolon at the end of a line is enough to stop every page. Fix that line, or put back a copy of the file from before the change.

A plugin or theme

Open wp-content/plugins and rename the plugin you changed last, say from contact-form to contact-form-off. WP switches off a plugin it can't find.

Can't tell which one? Rename the whole plugins folder to plugins-off. If the site loads, open Plugins › Installed Plugins once, so WP marks them all as off.

Then rename the folder back to plugins. Switch them on one at a time, and reload your site after each, until it breaks again.

If the log points to wp-content/themes/, rename your active theme's folder instead. WP switches to its default theme, if one is installed.

Memory and time limits

A log line with “Allowed memory size … exhausted” means WP ran out of memory. Add define( 'WP_MEMORY_LIMIT', '256M' ); to wp-config.php, above the “stop editing” line.

A line with “Maximum execution time” means a page took too long. Your host sets both caps, so ask them if your change doesn't help.

PHP version and file permissions

Did the 500 start when your host changed your PHP version? Update the plugin or theme the log names. If there's no update, ask your host about the version.

After a move, the server may not be allowed to read your files. Folders are usually set to 755 and files to 644. Your host can check them for you.

How to stop it coming back

Before you edit wp-config.php or .htaccess, download a copy of it. Putting the old copy back is the quickest way out.

Update one plugin at a time, and open your site after each one. If it breaks, you know which update did it.

Try big updates on a test copy of your site first. Many hosts can make one for you.

Next time

On a site that had CMSHands before the 500, it finds the cause and gets the fix ready. A person at CMSHands approves it before it runs.
  • On our test site, a typo in wp-config.php sent every page to a 500. It found the typo and put back the copy from before it, once a person at CMSHands approved.
  • When your site breaks, it reads your error log and settings to find the cause, on sites that had CMSHands first.
  • It checks your site once a day on the free plan, and at once when WP can report the crash itself.
More it does here (2)
  • A 500 from a broken .htaccess file needs your host's SFTP login (a way to copy files to and from your host). You type it into a one-time form the chat opens.
  • The chat tells you in plain English what broke and what it did. So does an email, once you add your address.

Why it won't wreck your site

  • A person checks every repair. When your site is down you can't reach the chat, so a person at CMSHands approves the fix before it runs.
  • It checks your pages after the fix. It loads your home page, login, dashboard and a post again before it calls the repair done.

What it won't do here

  • It can't be installed into a site that is already down.A plugin needs a working dashboard to install. Get your site back with the steps above first, then add it before anything else breaks.
  • A person approves every repairNothing in a repair runs until a person at CMSHands has checked it. It doesn't fix things alone overnight.
  • Some repairs need your host's SFTP loginWhen WP and our files on your site can't run, you add your host's SFTP login through a form the chat opens. It's used only for that repair.
  • It can't fix your server or change your PHP versionA 500 from the server itself, your PHP version or your host's limits belongs to your host. Ask them about those.
  • It doesn't clean up a hacked siteIf someone broke in and changed your files, ask your host or a security company for help.

Questions

How do I fix an HTTP error 500 in WordPress?

Undo what changed last. Rename .htaccess to .htaccess-off with your host's file manager, then reload. Still down? Undo your last edit to wp-config.php, or rename wp-content/plugins to plugins-off. When the site loads, put things back one at a time until it breaks again. Your host's error log names the file that failed.

What does 500 Internal Server Error mean in WordPress?

It means the server hit an error while building your page and sent back no page. The message doesn't say why. On a WP site, it's most often a broken .htaccess file, a typo in wp-config.php, a plugin crash or a memory limit. The server's error log has the details.

Is a WordPress internal server error my host's fault?

Usually not, but sometimes. If the 500 started right after you changed a plugin, a theme or a file, it's your site. If nothing changed, or other sites on your account are down too, ask your host. Their server log shows which one it is.

Is a 500 error the same as a critical error?

Not quite, though both send the same 500 code. With a critical error, WP caught the crash and shows its own message. With a bare 500, the crash happened before WP could, often in wp-config.php or .htaccess. The error log tells you which file failed.

Can CMSHands fix a 500 error on my site right now?

Not if your site is already down without it. A plugin can't be installed into a site that won't load, so get it back with the steps above first. With CMSHands on your site, it finds the cause of the next one, and a person at CMSHands approves the fix. Tried on our test sites; hosts differ.

Written by CMSHands team.

Be ready for the next one

  • A person approves every repair
  • No account, no password to share
Install it before it breaks