The Ultimate Guide to Solving 500 Internal Server Errors and Blank White Pages in WordPress

James Bruce Updated 28-02-2019

The 500 Internal Server Error is the most unhelpful bane of WordPress users everywhere. It’s a catch-all error message that means precisely: something somewhere went wrong. Even worse, your WordPress site may present no error at all and just show a blank white page.


So how can you figure out exactly what’s wrong, and fix it?

First: don’t panic, because it’s usually an easy fix! Then: follow this debug process and your WordPress Internal Server Error will be fixed in no time.

Are WordPress Plugins Causing Error 500?

If you’ve just installed a new plugin or if your site is showing a 500 error after a core WordPress upgrade, the most likely cause is an incompatible plugin. There are many reasons a plugin can be broken:

  • WordPress may have removed some core functions the plugin uses.
  • It may have been coded for an old version of PHP, and not been updated in years.
  • It could just be coded incorrectly, such as referring to default database names rather than using prefixes. We’re all guilty of lazy coding sometimes!

Identifying the plugin is easy if you’ve just installed one and the error has just emerged. But how can you disable the plugin if the admin area is inaccessible? And what if you don’t even know which plugin caused the error? You’ll need FTP access in either case, but a web-based file manager from CPanel or Plesk will work fine too.


Know precisely which plugin is broken? Find the plugin and delete it from within the wp-content/plugins/ folder. You should now be able to log in again. Find an alternative for whatever functionality you wanted.


If you’re not sure which plugin caused the error, you should rename the entire wp-content/plugins/ folder itself. Place an underscore (“_“) in front, so it’s named _plugins.

ftp client screen showing renaming plugins folder
Putting an underscore (_) at the start of the plugins folder name is a quick and easy way to deactivate all your plugins at once!

By renaming the folder, you effectively de-activate every plugin at once. You should now be able to log in again, but will be greeted by a list of error messages from WordPress saying “The plugin something.php has been deactivated due to an error: Plugin file does not exist.”

Don’t worry, you haven’t lost any settings. Plugin settings are stored in the database, and most plugins will find them again upon reactivation.


screen showing plugin error when folder has been renamed or deleted

Next, rename the folder back again, by removing the underscore. They’ll all be listed on your Plugins page, but in a deactivated state. You can now reactivate them one by one until you find the culprit.

When the site crashes again, repeat the process, but this time don’t reactivate the broken plugin!

500 Internal Server Error: Incompatible Theme

Disabling plugins didn’t help? It may be something to do with your theme then. Just like plugins, you can forcibly disable the active theme by simply renaming its folder, which you’ll find in the wp-content/themes/ directory.


If you still can’t access the admin area after trying to rename both the plugins and your current theme, you should continue to further steps. If you can log in, WordPress will alert you that it’s reverted to a default theme. At this point, you can either find a new theme, contact the theme developer for help, or try to fix it yourself.

To fix it yourself, or to provide further explanation for the developer, see the section later on Enabling WordPress Debug Mode.

500 Internal Server Error: Bad .htaccess File

If de-activating your plugins and theme achieved nothing, it’s possible that your .htaccess file became corrupted in some way. This is typically the case if you can still access the admin area of the site, but the front end doesn’t work correctly.

The .htaccess file handles the conversion of permalinks (pretty versions of a URL like /my-blog-post), to WordPress’ internal ugly URL scheme (the one you get by default, which looks like /?p=12345). It’s a critical part of WordPress, but plugins can sometimes mess it up.



Again, head over to your FTP client or file manager. Rename the .htaccess file in the root of your WordPress install directory to something like .htaccess_old. If you can’t actually see the file there, you need to enable viewing of hidden files—the exact method of doing that will vary according to your FTP client.

The period at the start of the filename is a way of saying “hide this file” in Linux and other UNIX-like systems.

Once you’ve renamed the current .htaccess, go back to the WordPress admin area, then head over to Settings > Permalinks and, without making any changes, hit save. This will automatically generate a new working version of the file.

If you made any changes to the file manually, those will be lost (but you shouldn’t be editing the file by hand anyway).

Enable WordPress Debug Mode to Trace Errors

We can enable a debug log from within WordPress config, which might give a clue as to the exact problem, but at this point you’re on your own. You’ll need to figure out how to fix it, which will require coding skills.

To enable the debug log, open up wp-config.php, which you’ll find in the root directory of your WordPress install. Be very careful editing this file: it may be a good idea to make a copy first that you can revert in case any unintended changes.

Find the line that says:

define('WP_DEBUG', false);

If your site isn’t frequently visited and you don’t mind the error messages being displayed to everyone, just change the word false to true. Error messages will now be shown when you load the site.

If you’d rather keep the error messages private, comment that line out by typing // at the start, then paste in the following beneath it:

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

This will start outputting errors to a file in wp-content folder called error.log. If you refresh the FTP client and see nothing after a minute or so, it’s possible WordPress doesn’t have permission to create the file. Manually create a new error.log file and give it permission 666.

enable wordpress debug mode in wp_config

Be warned: this file will continue to grow larger until you remove those lines from your config. Don’t forget to uncomment the original line as well. Read the file in any text editor, and check for any critical PHP errors.

In the example, I see a lot of PHP Notices about deprecated code, but these won’t actually break a site.


500 Internal Server Error: Server Misconfiguration

Running your own Virtual Private Server is not easy. I was once faced with a mysterious case of roughly half of all page loads showing a 500 error, but with no discernible pattern and no clues in the server error logs. Activating WordPress debug logs showed nothing obvious either: lots of PHP notices and deprecations, but nothing critical.

Finally, I realized I had installed APC caching onto the server the weekend before, to use with W3 Total Cache in order to speed up the site. Uninstalling that completely eradicated the 500 errors.

My point is that the 500 error could simply be a combination of server configs that present an incompatibility. This is unlikely if you’re using managed services, but with your own Virtual Private Server (what is a virtual server, and why you might want one What Is A Virtual Server, And What Can You Do With One? Virtual machines and virtual servers — what are they and how do they differ? Read More ) you’re responsible for making sure everything works together, and this is harder than it sounds.

Is Your Site Out of Memory?

On a shared host, you may find the PHP memory limit is being hit—WooCommerce, forums, or related posts plugins could cause this due to their complexity. If you’re lucky you’ll see an error message like “Fatal Error: Allowed memory size of xxx bytes exhausted” but not always.

You may be able to fix this by adding the following line to your wp-config.php:

define('WP_MEMORY_LIMIT', '64M');

Most shared hosts won’t actually let you increase the memory limit though—you get what you’re given. It may be time to consider other forms of hosting The Various Forms Of Website Hosting Explained [Technology Explained] Read More .

500 Error Fixed? Now Make Backups Daily!

wordpress updates available screen
Keep plugins updated to avoid conflicts with new versions of WordPress

The best defense against any kind of critical WordPress error is to maintain daily backups as well as a manual backup before every significant action (like a core WordPress update). Also, keep plugins and themes updated: new versions of WordPress frequently break old code.

It can be scary when your site breaks—especially if it’s a source of income for you and not just a hobby. By following this guide and being methodical, you should have it back up again soon.

Consider upgrading to a managed WordPress hosting service that handles backups and optimizations for you, making such errors non-existent. We recommend InMotion Hosting (use this link to get 38% off) and Bluehost (use this link to get 25% off).

Related topics: Wordpress, Wordpress Plugins.

Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.

Whatsapp Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Ian
    November 13, 2016 at 11:11 am

    I've been struggling with this for days and fixed it in 5 minutes with your advice. Thank you so much for this article. Cheers

  2. Steve
    August 23, 2016 at 2:39 pm

    Thank you so much! I was panicking when I got the 500 Internal Error on my website after adding a PayPal plugin. Deleting and recreating the htacess file worked.

  3. Ebenezer
    March 11, 2016 at 12:49 pm

    Hello, I was just doing wordpress update when it stopped and gave the 500 Internal error. I've tried everything but it has not worked. I enabled the error log and got this :

    [11-Mar-2016 11:59:42 UTC] PHP Notice: register_uninstall_hook was called incorrectly. Only a static class method or function can be used in an uninstall hook. Please see Debugging in WordPress for more information. (This message was added in version 3.1.) in /hermes/bosnaweb10a/b1964/ipg.kadelfrozenscouk/meatworld/wp-includes/functions.php on line 3792
    [11-Mar-2016 11:59:42 UTC] PHP Fatal error: Cannot redeclare add_term_meta() (previously declared in /hermes/bosnaweb10a/b1964/ipg.kadelfrozenscouk/meatworld/wp-includes/taxonomy.php:1577) in /hermes/bosnaweb10a/b1964/ipg.kadelfrozenscouk/meatworld/wp-content/themes/buyshop/framework/inc/taxonomy-metadata.php on line 103

    Can you help me decipher this error report please!

  4. rtdias
    February 22, 2016 at 3:48 am

    Hello All,

    after trying many many changes as proposed in different forums, what made the trick for me was simply to change the PHP version installed. After having that change applied in my host PLESK interface, the error automatically disappeared.

  5. Altemir
    February 12, 2016 at 7:13 pm

    my case, after restoring from backup, public folder, gave 500 error.

  6. Chris
    January 12, 2016 at 10:07 pm

    Hi there, I tried everything in your article, but nothing worked. This is my website url: . I am using php 7.0. The captcha don't load. What is your advice?

    • James Bruce
      January 13, 2016 at 11:03 am

      This is a guide to solving "500 server" errors when your wordpress site doesnt load. Your site is loading, so none of this is going to help. I'm afraid I can't debug a plugin for you - use the wordpress plugins forum to post a support ticket for the developer.

  7. Anonymous
    January 11, 2016 at 2:26 am

    I cannot see my .htaccess file in FileZilla even after being an admin and forcing view hidden files. If i just go to permanent links page in WordPress admin panel and without making any changes hit save, will it create a .htaccess file that i will be able to see? Can i trust on this method that it will not pull my website down? I have lost my website 2-3 times by attempting to change the perma links, i need you to advice me a working procedure to change it successfully. Also, i must add, i have a loaded website with posts and pages. I hope we can still change perma links safely.

  8. skylargifts
    January 10, 2016 at 6:20 am

    THANK YOU!!!! YOU TOTALLY SAVED MY LIFE!!!! I fixed it by adding those codes inside wp-config.php and checking out the error file to find out where my problem was. THANK YOU SO MUCH!!!!!!

    • Anonymous
      January 11, 2016 at 2:27 am

      Great to hear that you solved your problem. I have posted my issue here in the comments section. Kindly help me out.

  9. Cristiano
    December 8, 2015 at 12:15 am

    I solved this problem, applying permission in wp-admin folder and index.php file in root directory.

  10. Marielle
    November 12, 2015 at 2:58 pm

    thanks! You saved me from having to redo the relocating of my website :D

  11. Anonymous
    September 7, 2015 at 10:48 am

    after editing the file "wp-config.php" my problem solved

    this really really helps..............
    Thank you so so much..............
    god bless you.......

    thanks again

  12. Max
    March 30, 2015 at 8:17 pm

    Thanks.....I could solve 500 internal server problem based on your tips

  13. Darren
    January 23, 2015 at 12:18 am

    Love your work, this page is a life saver! Thank you so much!

  14. Kevin
    January 17, 2015 at 11:09 am

    Thank you very much for this article :) I thought I lost everything when the site turned all blank

  15. Drew Johnston
    January 9, 2015 at 2:18 pm

    I figured it out, I turned on the php debugging, and created a brand new debug.log file for the error to only see the latest issue, it appears that the plugin 'wp-html-compression' was to blame, this site being a photo blog and me loving the new mosaic style layout I leave the galleries to load dynamically.

    They create a ton of code on the fly and it seemed as though this was caging the error when it tried to shorten the urls and compress and remove the white space. The errors that I was getting are below, I deactivated the plugin tried it again, all worked fine. activated it again to be shown the exact same error, deactivated once more and voila the page worked.

    It is not critical to use this plugin on this site, I was only trying to boost my rating on gtmetrix and I am still up quite high on this site. If in the future I wanted to use it again is there any way to increase the PHP allowed memory size? or is that completely hosting companies domain?

    [09-Jan-2015 14:09:57 UTC] PHP Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 32 bytes) in /hermes/bosnaweb01a/b1095/nf.crazy-drew/public_html/DrewJohnston/wp-content/plugins/wp-html-compression/libs/html-minify.php on line 77

    [09-Jan-2015 14:09:57 UTC] PHP Fatal error: ob_end_flush(): Cannot use output buffering in output buffering display handlers in /hermes/bosnaweb01a/b1095/nf.crazy-drew/public_html/DrewJohnston/wp-includes/functions.php on line 3269

    [09-Jan-2015 14:09:58 UTC] PHP Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 72 bytes) in /hermes/bosnaweb01a/b1095/nf.crazy-drew/public_html/DrewJohnston/wp-content/plugins/wp-html-compression/libs/html-minify.php on line 77

    [09-Jan-2015 14:09:58 UTC] PHP Fatal error: ob_end_flush(): Cannot use output buffering in output buffering display handlers in /hermes/bosnaweb01a/b1095/nf.crazy-drew/public_html/DrewJohnston/wp-includes/functions.php on line 3269

    • James Bruce
      January 9, 2015 at 5:05 pm

      It looks like you're using shared hosting, so there's not a lot you can do. There are other caching options to look at though, like wp supercache or w3 total cache, but those may also trigger similar errors. If you can afford better hosting - say $30/month - I'd suggest specialist WordPress hosting which uses a managed cache, so you can focus on the content and ignore complicated plugins. I use MediaTemple WP Hosting for all installs now.

  16. Drew Johnston
    January 9, 2015 at 1:44 pm

    Hello There,

    I have an odd problem or what seems to be an odd problem and I keep getting a 500 error, however my whole website works fine, links, images, etc. except for one page, the latest page I published to the site, it was fine before all photos and links appeared but just recently only that one page will not show up, I get a 500 error. This website gets used as our travel blog, all vacation photos get piled here for friends family and online location reviews to use. Any idea what might be going on all of a sudden?

    My website is:
    Page that will not load is:

    Thanks in advance, I have tried to figure it out but don't want to screw it up.

  17. Lynette
    January 7, 2015 at 7:25 am

    I was unable to edit any of my pages. Searched the web until I stumbled across this. Ironically enough, turning on the debugging seemed to fix my "500 internal errors". *fingers crossed* Hope it stays that way. Thanks.

  18. Ibrahim
    December 16, 2014 at 1:36 am

    Bless you for this article, it was a life saver :-)

  19. Florian Stotz
    April 29, 2014 at 4:16 am

    I can add another one I just had to fix. FILE PERMISSIONS. Check that the files are set to 644 or/and 755

    • James B
      April 29, 2014 at 8:10 am

      Excellent addition, though in practice I've never come across this problem aside from complicated caching plugins like w3. Maybe it's more prevalent on shared hosting accounts...

  20. sajid
    April 23, 2014 at 9:29 am

    when i changed theme site was working but as i switched back (previous theme ) during its uploading massage appears
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, 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 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    • James Bruce
      April 23, 2014 at 10:12 am

      Go into your FTP, remove both of the "new" themes. WordPress will default to twenty-ten or whatever, which will at least indicate if your theme is the problem.

  21. sajid
    April 23, 2014 at 7:44 am

    this is error log file help out me find .what should i do ??

    ] [notice] EACCELERATOR(549446): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:40:24 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 549446)
    ] [notice] EACCELERATOR(545595): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:40:23 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 545595)
    ] [notice] EACCELERATOR(545517): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:39:17 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 545517)
    ] [notice] EACCELERATOR(545505): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:39:17 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 545505)
    ] [notice] EACCELERATOR(539397): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:37:15 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 539397)
    ] [notice] EACCELERATOR(539357): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:37:15 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 539357)
    ] [notice] EACCELERATOR(533179): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:35:35 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 533179)
    ] [notice] EACCELERATOR(533168): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:35:35 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 533168)
    ] [notice] EACCELERATOR(516936): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:33:33 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 516936)
    ] [notice] EACCELERATOR(518200): PHP crashed on opline 561 of main() at /home/ghsuah8r/public_html/wp-settings.php:316
    [Wed Apr 23 07:33:33 2014] [warn-phpd] mmap cache can't open /home/ghsuah8r/public_html/wp-content/themes/zalive/functions.php - Permission denied (pid 518200)

    • James Bruce
      April 23, 2014 at 8:01 am

      Sorry Sajid, that's a serious error with your hosting provider - EACCELLERATOR is a caching system, and it doesn't look like its been configured correctly. Who is your host? You might want to swap to a company that know what it's doing...

  22. Brianna
    March 18, 2014 at 3:20 am

    Hello, great advice! Thanks for the post.

    I just had this error message but I ended up fixing by changing my themes file to _themes and now it is up an running. My issue now is how do I find the problem to fix it and get my theme up and running again?


    • James B
      March 18, 2014 at 8:53 am

      Did you try enabling wp-debug setting? that'll probably be more helpful in pinpointing the error with the theme.

  23. Dave
    February 21, 2014 at 4:45 pm

    Thank you very much for this article. Upgraded WP and WooCommerce last night and the site seemed to be fine, but then died - suspect i was using some cached files. Digging into it today, following your instructions has resolved the problem - WP seemed to write some rubbish into the .htaccess file, and now fixed - much relief as it wasn't my site I was updating.

  24. Jacob
    February 18, 2014 at 6:21 pm

    I edited my theme (Vantage) trying to add in a google+ href into the functions.php file. When it didnt work, i erased the added code and saved. First, I got an parse error on all pages with my domain. At some point while trying to revert what I had done, I got my 500 error message. Any thoughts on what to do?

    I tried renaming the theme in cpanel, nothing. I tried deleting the functions.php file and replacing it with one from a downloaded version of Vantage. Nothing. Even removed the theme altogether.

    Should i reinstall WP to my domain?

    • James B
      February 18, 2014 at 9:44 pm

      Does the wp-admin side load, or is it broken / blank site wide? Have you tried defining debug as true in the wp-config.php file? That would hopefully print out some errors as to what exactly is wrong. How did you edit the file - through FTP, or through the built-in WordPress theme editor thing?

  25. Deneme
    February 9, 2014 at 4:40 pm

    maybe i do somthng wrong.. try almost all tips but still have 500 internal server error.. when i active plugin and this error startng.. plugin Fix Multiple Redirects 1.2

    enable debugging

    .htaccess file Fix
    No changes

    • James B
      February 10, 2014 at 8:33 am

      I'm confused: you say the errors start when you activate that plugin? Can you not, just, not activate it?

  26. Dominic Wong
    December 7, 2013 at 6:32 am

    Thanks, you helped me tremendously! :)

  27. Justin P
    November 5, 2013 at 10:17 pm

    I'm bookmarking this for next time...these errors are the worst.