🔧 Flat-price WordPress fixes from $69 — start with a free diagnosis, no card. Get a free diagnosis →

Errors

Diagnose a WordPress 500 Error Without Guessing

Sep 17, 2026 · 10 min read · By the Mend engineering team

A WordPress 500 internal server error means the server hit a problem, but it usually does not tell you which part broke. The fastest safe approach is to check for a recent change, then use logs and a few controlled tests to narrow it down instead of randomly disabling things.

Start with a backup if the site still responds at all. Then work from the outside in: confirm whether the error affects the whole site or only admin, check for hosting-level issues, and test plugins, themes, and server configuration one at a time.

What a 500 error usually looks like

With WordPress, a 500 error may appear as a plain browser message, a branded host error page, or a blank white page with a server-side failure behind it. Sometimes only certain URLs fail, such as /wp-admin, a form page, or a single post. Other times the whole site goes down after a change like a plugin update, a theme edit, a migration, or a permission change.

The frustrating part is that “500” is not the root cause. It is a generic server response that can hide many different problems: a bad .htaccess rule, a PHP fatal error, a memory limit issue, a plugin conflict, an invalid file permission, a corrupt core file, or a host-level restriction.

Likely causes, in practical order

  • Recent plugin, theme, or core change that introduced a fatal error.
  • Broken rewrite rules in .htaccess or Nginx config.
  • PHP memory or execution limits too low for the current workload.
  • File permission or ownership problems after migration or restore.
  • Corrupted WordPress core files, especially after an interrupted update.
  • Security or mod_security rules blocking a request at the server level.
  • Host-side outages or resource limits such as CPU, RAM, inode, or entry process caps.

Step 1: Confirm the scope before changing anything

First, check whether the error affects only one page or the entire site. Try the homepage, a known post, /wp-admin, and a different browser or incognito window. If you can access the dashboard, note the last action taken before the error started: update, restore, plugin install, theme edit, cache change, or migration.

This matters because a site-wide 500 often points to server config, a fatal plugin/theme error, or file corruption, while a page-specific 500 often points to a bad rule, a failing template, or a security filter triggered by one request.

Step 2: Check whether the host is already telling you the answer

Many hosts expose error logs in the control panel. Look for the site’s PHP error log, web server error log, or application log. If the host uses a managed stack, there may also be alerts for resource limits, blocked requests, or recent service problems.

What you want to see is the first fatal line close to the time the 500 began. Useful clues include:

  • PHP Fatal error
  • Allowed memory size exhausted
  • Uncaught Error
  • Permission denied
  • mod_security or a blocked rule ID
  • Premature end of script headers

If the log points to a specific plugin or theme file, you already have a strong lead. If it points to .htaccess, permissions, or a server module, skip ahead to those checks.

Step 3: Rule out a broken .htaccess file

On Apache or LiteSpeed, a bad .htaccess file is one of the quickest causes of a 500 error. Before editing, make a copy of the file so you can restore it if needed. Then rename .htaccess to something like .htaccess-old.

If the site comes back, the problem is in that file or one of its rewrite rules. In WordPress, you can create a fresh default ruleset by visiting Settings > Permalinks and clicking Save Changes after the site is stable. If you use Nginx, the equivalent fix is in the server block configuration, not a file inside WordPress.

Step 4: Test plugins without breaking the site further

If you still have dashboard access, disable all plugins, then reactivate them one by one until the error returns. If you do not have admin access, use FTP, SFTP, or your host file manager to rename the plugins folder inside wp-content. WordPress will stop loading plugins while preserving their files.

Once the site loads again, rename the folder back and disable plugins in smaller groups to find the culprit. A single plugin can trigger a 500 by throwing a fatal PHP error, loading incompatible code, or calling a server function your host has disabled.

If a security, caching, optimization, or page builder plugin was updated just before the error, give that plugin extra attention. If the error started after installing something unfamiliar, it is worth checking whether it is trustworthy before re-enabling it. See What to Do When a WordPress Update Breaks the Site for a safe rollback flow.

Step 5: Switch themes to isolate theme-level failures

If plugins are not the issue, test the active theme. The safest method is to temporarily switch to a default WordPress theme such as Twenty Twenty-Four, if it is installed and the dashboard is available. If admin is not available, you can rename the active theme folder via FTP/SFTP to force WordPress to fall back to another theme.

Theme-based 500 errors often come from functions.php changes, custom template code, or a child theme override that calls a missing function. If the site works after switching themes, compare the active theme’s recent edits before you undo anything else.

Step 6: Check memory limits and PHP compatibility

A site can throw a 500 error when PHP runs out of memory or hits a fatal compatibility issue. This is common after adding a heavier plugin, importing lots of content, or updating to a newer PHP version without checking plugin compatibility.

Look in the logs for memory exhaustion. If that is the cause, the real fix may be to remove the runaway plugin, reduce the workload, or raise the PHP memory limit through the host or WordPress config where appropriate. Do not blindly raise limits forever; that can hide a deeper problem.

If the log shows a fatal error tied to a specific PHP version, ask whether your host recently changed the version. Some sites need a temporary rollback to a compatible PHP release while code is updated properly.

Step 7: Verify file permissions and ownership

After migrations, restores, or manual file uploads, bad permissions or incorrect ownership can break WordPress in ways that show up as 500 errors. Typical safe defaults depend on host and server setup, but broadly speaking directories should not be world-writable, and WordPress files should be owned by the account the site runs under.

If a host migration just happened, ask the host whether the files were copied with the right ownership. If permissions were manually changed, restore them carefully from host guidance rather than guessing. Incorrect permission fixes can create a bigger security problem than the original error.

Step 8: Reinstall WordPress core files if the logs point there

If the logs reference WordPress core files and you have ruled out plugins, theme, .htaccess, and permissions, a clean core file reinstall can fix corruption. Replace only the core files and folders from a fresh WordPress download, not wp-content or wp-config.php, unless you know exactly why.

This is especially useful after a partial update or interrupted restore. If the error started immediately after a core update, compare this article with WordPress Site Broke After an Update? Here's What Happened and How to Fix It.

Step 9: Look for server-side blocking or limits

Some 500 errors are not WordPress at all. Security tools like mod_security, WAF rules, or host-specific protections may block a request and return a generic 500. That is especially likely if only one form, one URL, or one action triggers the error.

If you suspect this, note the exact URL, time, and action that triggered the failure, then send it to the host. They can often see which rule fired. If your site is on a shared host with strict limits, ask whether resource caps were hit at the same time.

Step 10: Use logs to avoid guesswork

If you have WP_DEBUG available, enable logging carefully and check the debug log for the first real fatal error. The goal is not to turn on noisy public debugging; it is to capture the underlying PHP error so you can fix the source, not just the symptom.

For a cleaner diagnostic workflow, see How to Fix the WordPress 500 Internal Server Error and WordPress 500 Errors: A Step-by-Step Diagnosis Guide. If you want to learn how to read the actual log lines, How to Fix the WordPress White Screen of Death also covers the kind of fatal errors that often sit behind a 500.

How to prevent the next 500 error

The best prevention is boring but effective: keep a tested backup, update one thing at a time, and watch for changes in logs after every maintenance task. Avoid editing live theme or plugin files directly unless you can revert them quickly.

It also helps to keep a note of what changed before any outage. A small maintenance log — plugin updates, PHP version changes, new security rules, migrations, and custom code edits — can cut diagnosis time dramatically when something breaks later.

If your site has a habit of breaking after routine maintenance, a managed care workflow can save a lot of time. Mend’s Care Plan covers updates, backups, security, and uptime monitoring, which is useful if you want fewer surprises and faster recovery when something does go wrong.

When to call a professional

Bring in help if the site is down for customers, you cannot get into admin, the logs are unclear, or the fix could affect production data. It is also smart to stop and get help if the site is live on revenue pages, if there is any sign of malware, or if the error appeared right after a migration or code deployment.

That is exactly the kind of situation Mend is built for. A senior engineer can diagnose the failure on a backup-first workflow, usually the same day, and you get a plain-English report of what broke and what changed. If you want a flat, agreed price and a clean handoff, start with Free Diagnosis or jump straight to Emergency Rescue if the site is actively down. If you already know it is a smaller fix, Quick Fix is the fastest route.

If you need secure access without sharing passwords, use Connect your site securely. Mend is independent and not affiliated with or endorsed by the WordPress Foundation or Automattic.


A simple order for most 500 errors

  1. Back up the site if possible.
  2. Check whether the problem is site-wide or isolated.
  3. Review the host error log for the first fatal line.
  4. Rename .htaccess and test again.
  5. Disable plugins, then test the active theme.
  6. Check memory, PHP version, permissions, and ownership.
  7. Reinstall core files only if the logs point there.
  8. Ask the host about server-side blocking or resource limits.

If you are stuck between steps and do not want to make the outage worse, it is reasonable to hand it off. The fastest fix is usually the one that starts with the real cause, not another round of guesses.

Frequently asked questions

Is a WordPress 500 error the same as a critical error?

No. A 500 error is a server response code, while a critical error is a WordPress message for a fatal problem. They can come from the same root cause, but they are not identical.

Can I fix a 500 error without admin access?

Yes. You can often rename the plugin folder, rename .htaccess, or inspect logs through FTP/SFTP or your host panel. Those steps are often enough to get the site loading again.

Should I increase PHP memory first?

Only if the logs point to memory exhaustion. It is better to find out which plugin, theme, or process is using too much memory than to hide the problem with a bigger limit.

What if the error only happens on one page?

Focus on that page’s template, custom code, form handler, or server rule first. A page-specific 500 usually has a narrower cause than a full-site outage.