I think I might have found the error from the log file in the /mod/certificate path:
[06-Feb-2017 00:37:01 Europe/London] PHP Fatal error: Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0
[28-Apr-2017 01:28:52 Europe/London] Default exception handler: A required parameter (id) was missing Debug:
* line 435 of /lib/setuplib.php: moodle_exception thrown
* line 504 of /lib/moodlelib.php: call to print_error()
* line 32 of /mod/certificate/view.php: call to required_param()
This looks to me like a deprecated directive. Would installing the newest version of 'certificate' recover from this error? I guess there would need to be some reconfiguration to get the certs looking similar to the old version.
I gather from the internet that removing the reference to 'allow_call_time_pass_reference' in the php.ini will fix the issue but I'm on a shared hosting service so fiddling with the php.ini is not possible. Sometimes it can be overridden in a local php.ini but the solution is to remove the directive in the php.ini so I'm not sure how to setup a negation if absence of a directive is needed...
Running Moodle 2.2.5 (on PHP version 5.4.45 ) with these certificate details:
$module->version = 2013021200; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2010112400; // Requires this Moodle version
$module->cron = 0; // Period for cron to check this module (secs)
$module->component = 'mod_certificate';
$module->maturity = MATURITY_STABLE;
$module->release = "Stable (2012121302)"; // User-friendly version number
Perhaps an upgrade to the latest certificate might be in order?