A look at the only code which references PEAR_ERROR_CALLBACK
in CiviCRM core is telling - the file comment starts with This is an evil, evil workaround ....
So you've probably uncovered a legit unexpected bug or misbehaviour here. Something about the site setup or the volunteers extension seems to be upsetting things, but in a way that might not be experienced by the majority of sites.
Your PHP version is OK if not great, and your installed PEAR libraries should not interact with CiviCRM (which bundles its own copies of PEAR libs). So I don't think those should be your problem.
In your situation, I'd first check the Debugging and Error Handling settings (see civicrm/admin/setting/debug
in your CiviCRM install) and make sure there aren't any unexpected "error callback" settings. Also check out what other extensions (especially debug related) are present in your install; try disabling those if present.
Next steps to debug would be to find backtraces in the CiviCRM debug log, and understand what code path is leading to this error.
More thoughts ... Assuming CRM_Core_TemporaryErrorScope::create()
works the rest of the time, then we know PEAR_ERROR_CALLBACK
is defined the rest of the time. This means that when you hit this error, you're hitting that method when PEAR hasn't been loaded at all.
The constant ought to be defined when PEAR is loaded during CiviCRM bootstrap; CiviCRM isn't going to get much done without PEAR, since it relies on that for essentials like DB access. This suggests CiviCRM has not been fully bootstrapped - we see similar issues also when the CMS is not bootstrapped, so Drupal / Joomla / whatever functions or constants are not available.
The above could mean that the means of installing CiviVolunteer is being incorrectly applied, or that CiviVolunteer installation is broken. I don't know which; if you expand your question to describe the steps you're taking to install CiviVolunteer, that could improve the quality of answer you can get.