As I was running tests on all of the WordPress enabled websites I maintain, to verify that the recent PHP & WordPress upgrades were working I ran across a puzzling problem. One of my website’s blog displayed nothing but a white screen. After pouring over every log file I could find I discovered there was nothing to find. The only error message generated by these white screens was an httpd error 500!
So I went off to google foo to see what I could find. Turns out, this seems to be quite the problem in the WordPress world. It also seems that there are many, many theories and proposed solutions to what is called the “WordPress Blank Screen of Death“.
While I did foo some good advise, most of it I had already explored in several hours of debug work. The most likely cause, since this problem reared it’s ugly head after my PHP upgrades, was a misbehaving plugin. But which one? And how do you disable a plugin when you can’t even get to your dashboard?
The trick was found by examining the database(s). In the options table there is a tuple enumerating the plugins in use. After verifying that this was the sole definition, clearing out the plugin attribute in the tuple cleared the problem.
And after a bit of testing I found the offending plugin:
- WP-EMail Widget Version 2.40
Fatal error: Cannot redeclare widget_email_init() (previously declared in /usr/local/www/data/wordpress/wp-content/plugins/wp-email/wp-email.php:1400) in /usr/local/www/data/wordpress/wp-content/plugins/wp-email/wp-email-widget.php on line 102
Apparently this plugin was discontinued in WP-EMail 2.5. You will need to completely remove the plugin before upgrading to get rid of the php file for the widget.
After reviewing the updates of some of Lester’s other plugins it appears that his updates are all implemented differently. You will need to completely review any and all of these plugins to ensure that the old versions are deleted.
And finally a word on WordPress best practices upgrade procedures which call for de-activating all plugins prior to the upgrade. If you are running multiple sites, this is an unwieldy procedure. It is far easier to make sure all plugins have been upgraded to their latest versions and then take the failures up on a case by case basis.
It would be a great help, if when upgrades are detected during subsequent accesses to each website, that not only a database update is preformed, but a check or a reinstall is run on each of the plugins deployed for the site. This notion of a “WordPress Blank Screen of Death” is comical at best.