Add custom requirements in installation profile. Drupal 7

305 Views Asked by At

I'm writing an installation profile and want to notice users if they have low "max_execution_time" and "memory_limit" values. As I understand Drupal has to check the myprofile.install file for possible requirements so I placed there the following:

        function myprofile_requirements($phase) {
          $requirements = array();
          // Min required PHP execution time
          $min_time  = 60;
          // Min required memory limit, Mb
          $min_memory = 128;
          // Get current value of "max_execution_time"
          $time = ini_get('max_execution_time');
          // Get current value of "max_execution_time"
          $memory = ini_get('memory_limit');
          // Get "raw" numeric value
          preg_match("|\d+|", $memory, $value);
          $severity_time = ($time < $min_time) ? REQUIREMENT_WARNING : REQUIREMENT_OK;
          $severity_memory = ($value[0] < $min_memory) ? REQUIREMENT_WARNING : REQUIREMENT_OK;
          $t = get_t();
          if ($phase == 'install') {
            $requirements['max_execution_time'] = array(
              'title' => $t('PHP max execution time'),
              'value' => $t('Please increase the parameter "max_execution_time" in your PHP settings . Recommended value is at least @min sec. and more (now you have @current sec.', 
        array('@min' => $min_time, '@current' => $time)),
              'severity' => $severity_time,
    );
            $requirements['memory_limit'] = array(
              'title' => $t('PHP memory limit'),
              'value' => $t('Please increase the parameter "memory_limit" in your PHP settings . Recommended value is at least @minM and more (now you have @current', 
        array('@min' => $min_memory, '@current' => $memory)),
              'severity' => $severity_memory,
    );
  }
  return $requirements;
}

It does not work - Drupal simple ignores the code above. What's wrong?

1

There are 1 best solutions below

1
Clive On

It looks like hook_requirements() doesn't get called in the install profile, it's invoked at these stages:

  • install: The module is being installed.
  • update: The module is enabled and update.php is run.
  • runtime: The runtime requirements are being checked and shown on the status report page.

Note that install above refers to a module being installed, not the install profile as a whole.