diff --git a/pear/PEAR.php.in b/pear/PEAR.php.in index 3c91b576d96..b2556bc329c 100644 --- a/pear/PEAR.php.in +++ b/pear/PEAR.php.in @@ -212,9 +212,9 @@ class PEAR case PEAR_ERROR_CALLBACK: $setmode = $mode; - if (is_string($options) || - (is_array($options) && sizeof($options) == 2 && - is_object($options[0]) && is_string($options[1]))) { + if ((is_string($options) && function_exists($options)) || + (is_array($options) && method_exists(@$options[0], @$options[1]))) + { $setcallback = $options; } else { trigger_error("invalid error callback", E_USER_WARNING);