I just installed this plugin on 3.9.2 with PHP5 and of course got the same errors.
To fix it, I had to swap 2 functions in 2 files.
First swap was the __construct function and the wpsh_boot_loader starting on line 9 in /wp-content/plugins/wp-system-health/wp-system-health.php. It should look like this if you’re unclear what I mean:
function __construct() {
$this->pure_init = !function_exists('add_action');
$this->memory_limit = (int) $this->convert_ini_bytes(@ini_get('memory_limit'));
//if no limit is available set it to 1GB to be sure at divisions ;-)
if($this->memory_limit == 0) $this->memory_limit = 1024*1024*1024;
$this->mem_usage_possible = function_exists('memory_get_usage');
$this->mem_usage_denied = preg_match('/memory_get_usage/', @ini_get('disable_functions'));
$this->exec_denied = preg_match('/exec/', @ini_get('disable_functions'));
if (!$this->exec_denied) // Suhosin likes to throw a warning if exec is disabled then die - weird
$this->exec_denied = preg_match('/exec/', @ini_get('suhosin.executor.func.blacklist'));
$this->is_windows = ( substr(PHP_OS,0,3) == 'WIN');
$this->check_points = array();
if ($this->pure_init) {
if (version_compare(phpversion(), "5.0.0", '<')) { $this->options = $this->defaults; } else { $this->options = clone($this->defaults); }
$this->pass_checkpoint('boot:wp-config', $this->memory_get_usage());
}else{
$this->pass_checkpoint('boot:wp-config.failed', 0);
}
}
function wpsh_boot_loader() {
$this->__construct();
}
The second swap was the wpsh_plugin function and the __contruct function starting on line 77 in /wp-content/plugins/wp-system-health/wp-system-health.php. It should look like this again, if I’m unclear:
public function __construct() {
$this->defaults = new stdClass;
$this->defaults->disable_dashboard_widget = false;
$this->defaults->disable_admin_footer = false;
$this->defaults->disable_rightnow = false;
$this->defaults->enable_frontend_monitoring = false;
$this->defaults->quota_block_size = 1024;
//try to get the options now, repair the PHP 4 issue of cloning not supported
if (version_compare(PHP_VERSION,"5.0.0","<")) { $this->options = $this->defaults; } else { $this->options = clone($this->defaults); }
$tmp = get_option('wp-system-health', $this->defaults);
foreach(array_keys(get_object_vars($this->defaults)) as $key) {
if (isset($tmp->$key))
$this->options->$key = $tmp->$key;
}
$this->theme_done = false;
$this->gettext_default_done = false;
global $wpsh_boot_loader, $wp_version;
if (!is_object($wpsh_boot_loader) || (get_class($wpsh_boot_loader) != 'wpsh_boot_loader')) {
require_once('boot-loader.php');
$this->boot_loader = new wpsh_boot_loader();
}
else{
$this->boot_loader = &$wpsh_boot_loader;
}
if ($this->boot_loader->is_windows)
$this->options->quota_block_size = 1; //Windows have bytes, so override it!
$this->transports_available = array(
'curl' => array( 'use' => false ),
'streams' => array( 'use' => false ),
'fopen' => array( 'use' => false ),
'fsockopen' => array( 'use' => false ),
'exthttp' => array( 'use' => false )
);
$this->l10n_tracing = version_compare($wp_version, "2.9", '>=');
$this->l10n_loaded = array();
$this->boot_loader->pass_checkpoint('boot:plugin');
add_action('load_textdomain', array(&$this, 'on_load_textdomain'), 99999, 2);
add_action('plugins_loaded', array(&$this, 'on_plugins_loaded'), 99999);
add_action('setup_theme', array(&$this, 'on_setup_theme'), 99999);
add_filter('gettext', array(&$this, 'on_gettext'), 99999, 2);
add_action('init', array(&$this, 'on_init'), 99999);
add_action('admin_init', array(&$this, 'on_admin_init'), 99999);
add_action('admin_menu', array(&$this, 'on_admin_menu'), 99999);
add_action('rightnow_end', array(&$this, 'on_rightnow_end'), 0);
add_action('wp_footer', array(&$this, 'on_frontend_footer'), 99999);
add_action('admin_post_wp_system_health_save_settings', array(&$this, 'on_save_settings'));
add_action('wp_ajax_wp_system_healts_check_memory', array(&$this, 'on_ajax_wp_system_healts_check_memory'));
add_filter('use_fsockopen_transport', array(&$this, 'on_use_fsockopen_transport'));
add_filter('use_fopen_transport', array(&$this, 'on_use_fopen_transport'));
add_filter('use_streams_transport', array(&$this, 'on_use_streams_transport'));
add_filter('use_http_extension_transport', array(&$this, 'on_use_http_extension_transport'));
add_filter('use_curl_transport', array(&$this, 'on_use_curl_transport'));
add_filter('update_footer', array (&$this, 'on_footer_text'), 99999);
$this->plugin_basename = plugin_basename(__FILE__);
$active_plugins = get_option('active_plugins');
if ($active_plugins[0] != $this->plugin_basename) {
//force at least at next page load this plugin to be the first one loaded to show up the other plugins memory consume
$reorder[] = $this->plugin_basename;
foreach($active_plugins as $plugin) {
if ($plugin != $this->plugin_basename)
$reorder[] = $plugin;
}
update_option('active_plugins', $reorder);
}
}
function wpsh_plugin() {
$this->__construct();
}
Works FANTASTIC after these tweaks. My thanks to the original plugin author.