Pinterest Stumbleupon Whatsapp
Ads by Google

The 500 Internal Server Error is the most unhelpful and nondescript bane of web developers everywhere. It’s a catch-all error message that can literally mean anything. Sometimes, your WordPress site gives no error at all and just shows a blank page. How on earth are you supposed to figure out what’s wrong?

It happens to the best of us, but no need to panic. Here’s my own debug process, in order of likelihood and with solutions.

Plugins

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

  • WordPress may have removed some core functions the plugin uses.
  • The plugin may have been coded for an old version of PHP, and not been updated.
  • It could just be coded incorrectly, by referring to default database names rather than using prefixes, for example.

Identifying the plugin is easy if you’ve just installed one and the error has emerged, but how can you disable the plugin if it’s taken down the wp-admin area of your site too? You’ll need FTP access, is the short answer, though the web-based file manager from CPanel or Plesk will work fine too.

Solution:

All you need to do is rename the wp-content/plugins/ folder. Place a _ in front of the plugins folder, so it’s named _plugins, and you should now be able to login again to your WordPress admin area. By renaming the folder, you effectively de-activated every plugin – you should get a bunch of error messages from WordPress saying “X plugin was deactivated because the file Y.php can’t be found”. Don’t worry, you won’t have lost any settings – those are stored in the database, and any decent plugin should find them again upon re-activation.

plugin-doesnt-exist

Ads by Google

Rename the folder back again, removing the _. Refresh the WordPress plugins and they’ll all be listed again, but in a deactivated state. You can now re-activate them one by one until you find the culprit; then do it all again, obviously leaving out the bad plugin this time.

It’s unfortunate when this happens, but chances are there’s a better plugin out there that is compatible. Find it.

Incompatible Theme

Disabling plugins didn’t help? It’s probably something in your theme, then. Just like plugins, you can force the active theme to break by simply renaming it. Go back to the WordPress admin area (if you can, of course – if you can’t, it’s probably nothing to do with your theme) and WordPress will alert you that it’s fallen back to the default theme. Check the site again. Of course, this doesn’t really help if you’re committed to a particular theme, so may want to re-enable it and head down to the section on Enabling PHP Debug; or just go and find a newer, compatible theme.

Bad .htaccess

If de-activating your plugins achieved nothing and it’s also not your theme, it’s possible that your .htaccess file became corrupted in some way. Usually when this happens you can still access the admin area of the site. The .htaccess file handles rewrite rules and cache settings, but sometimes you’ll edit this file directly to manually code in things like 301 redirects.

Solution:

Rename the .htaccess file in the root of your WordPress install folder 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 “.” at the start of the filename is a way of saying “hide this” in Linux and other UNIX-like systems.

Once you’ve renamed the current .htaccess, go back to 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, though any changes you made manually will be lost.

Enable PHP Debugging

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 in the root of your WordPress install. Find the line that says:


define('WP_DEBUG', false);

Comment it out using // at the start, then paste in the following:


define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

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

wp-debug

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 this example, I see a lot of PHP Notices about deprecated code, but these won’t actually break a site.

debug-log

Server config

I recently had a case where roughly half of all page loads were coming up as 500, but with no set pattern and absolutely nothing helpful in the error logs. Activiting WordPress debug logs showed nothing obvious – lots of PHP notices and deprecations but nothing critical. Finally, I realised I had installed APC caching onto the server the weekend before, to use with W3 Total Cache. Uninstalling that completely eradicated the 500 errors.

My point: 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 (why should you use a VPS instead of shared hosting? Why You Should Use A VPS Instead Of Shared Hosting For WordPress Why You Should Use A VPS Instead Of Shared Hosting For WordPress Read More ) you’re responsible for making sure everything works together, and this is harder than it sounds.

On a shared host, you may find the PHP memory limit is being hit – particularly complex plugins could cause this. If you’re lucky you’ll get an error message too along the lines of “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');

I say may, because most shared hosts won’t actually let you increase the memory limit – you take what you’re given. Perhaps it’s time to consider other forms of hosting The Various Forms Of Website Hosting Explained [Technology Explained] The Various Forms Of Website Hosting Explained [Technology Explained] Read More ?

Of course, if you’d taken backups before running any upgrades How To Backup & Restore Your WordPress Site Easily With UpdraftPlus How To Backup & Restore Your WordPress Site Easily With UpdraftPlus Read More  you’d have an easy route to recovery. It’s terrible when your site goes down – especially if it’s a source of income for you and not just a hobby – but by following this guide and being methodical, you should have it back up again soon.

Have you ever had a 500 Internal Server Error or blank page that wasn’t solved by one of these? Let us know what your problem was, and how you fixed it.

 

  1. 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.

  2. 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!

  3. 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.

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

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

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

    Hi there, I tried everything in your article, but nothing worked. This is my website url: onderzoeksmodel.nl/contact/ . 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.

  6. Haymkarran S bhalla
    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.

  7. 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!!!!!!

    • Haymkarran S bhalla
      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.
      Regards.

  8. 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.

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

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

  10. Satish Tayade
    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

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

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

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

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

  13. 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

  14. 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.

  15. 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: http://www.drewjohnston.ca/
    Page that will not load is: http://www.drewjohnston.ca/lasvegas/

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

  16. 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.

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

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

  18. 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...

  19. 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, webmaster@ghs-uae.com 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.

  20. 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...

  21. 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?

    Thanks.

    • 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.

  22. 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.

  23. 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?

  24. 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
    redirect_canonical

    .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?

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

    Thanks, you helped me tremendously! :)

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

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

Leave a Reply

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