diff --git a/includes/install.inc b/includes/install.inc
index 14b5d7e..57323e4 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -1166,6 +1166,8 @@ function drupal_check_module($module) {
   if (module_hook($module, 'requirements')) {
     // Check requirements
     $requirements = module_invoke($module, 'requirements', 'install');
+    // Allow other modules a chance to intervene.
+    drupal_alter('requirements', $requirements, 'install');
     if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
       // Print any error messages
       foreach ($requirements as $requirement) {
diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 0fe88ea..cc36dd5 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -2229,6 +2229,8 @@ function system_status($check = FALSE) {
 
   // Check run-time requirements and status information.
   $requirements = module_invoke_all('requirements', 'runtime');
+  // Allow other modules to intervene.
+  drupal_alter('requirements', $requirements, 'report');
   usort($requirements, '_system_sort_requirements');
 
   if ($check) {
diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index 5ee776a..d7b63ce 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -4434,5 +4434,41 @@ function hook_filetransfer_info_alter(&$filetransfer_info) {
 }
 
 /**
+ * Alter the requirements array composed from modules implementing
+ * hook_requirements class.
+ *
+ * @param array $requirements
+ *   Reference to a nested array containing information about the requirements
+ *   Each requirement is itself an array with the following items:
+ *   - title: The name of the requirement.
+ *   - value: The current value (e.g., version, time, level, etc). During
+ *     install phase, this will be used for version numbers, do not alter
+ *     it if not applicable.
+ *   - description: The description of the requirement/status.
+ *   - severity: The requirement's result/severity level, one of:
+ *     - REQUIREMENT_INFO: For info only.
+ *     - REQUIREMENT_OK: The requirement is satisfied.
+ *     - REQUIREMENT_WARNING: The requirement failed with a warning.
+ *     - REQUIREMENT_ERROR: The requirement failed with an error.
+ *  The keys of the array are dependant on the implementing module, refer
+ *  to the relevant module to determine the value of the keys.
+ *
+ *  @param string $phase either 'install' for when the requirements relate
+ *    to install time or 'runtime' for the status report
+ *
+ *  As this function may be run at lower bootstrap levels, calls to t() should
+ *  use get_t() first
+ *
+ * @see hook_requirements()
+ */
+function hook_requirements_alter(&$requirements, $phase) {
+  $t = get_t();
+  $requirements['php'] = array(
+    'title' => $t('PHP'),
+    'value' => ($phase == 'runtime') ? $phpversion .' ('. l($t('phpinfo'), 'admin/reports/status/php') .')' : $phpversion,
+  );
+}
+
+/**
  * @} End of "addtogroup hooks".
  */
