diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index d58779d537..c81d11bf14 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -12,6 +12,7 @@
 use Drupal\Core\Config\BootstrapConfigStorageFactory;
 use Drupal\Core\Extension\Exception\UnknownExtensionException;
 use Drupal\Core\Logger\RfcLogLevel;
+use Drupal\Core\Requirements;
 use Drupal\Core\Test\TestDatabase;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Utility\Error;
@@ -22,10 +23,12 @@
  *
  * Drupal cannot be installed on versions of PHP older than this version.
  *
- * @todo Move this to an appropriate autoloadable class. See
- *   https://www.drupal.org/project/drupal/issues/2908079
+ * @deprecated in Drupal 8.7.0, will be removed before Drupal 9.0.0. Use
+ *   \Drupal\Core\Requirements::MINIMUM_PHP instead.
+ *
+ * @see https://www.drupal.org/node/2909361
  */
-const DRUPAL_MINIMUM_PHP = '5.5.9';
+const DRUPAL_MINIMUM_PHP = Requirements::MINIMUM_PHP;
 
 /**
  * Minimum recommended version of PHP.
@@ -34,10 +37,12 @@
  * message, but Drupal can still be installed. Used for (e.g.) PHP versions
  * that have reached their EOL or will in the near future.
  *
- * @todo Move this to an appropriate autoloadable class. See
- *   https://www.drupal.org/project/drupal/issues/2908079
+ * @deprecated in Drupal 8.7.0, will be removed before Drupal 9.0.0. Use
+ *   \Drupal\Core\Requirements::MINIMUM_PHP instead.
+ *
+ * @see https://www.drupal.org/node/2909361
  */
-const DRUPAL_RECOMMENDED_PHP = '7.1';
+const DRUPAL_RECOMMENDED_PHP = Requirements::RECOMMENDED_PHP;
 
 /**
  * Minimum recommended value of PHP memory_limit.
@@ -46,10 +51,12 @@
  * contributed modules to be installed prior to hitting the limit. However,
  * 40M is the target for the Standard installation profile.
  *
- * @todo Move this to an appropriate autoloadable class. See
- *   https://www.drupal.org/project/drupal/issues/2908079
+ * @deprecated in Drupal 8.7.0, will be removed before Drupal 9.0.0. Use
+ *   \Drupal\Core\Requirements::MINIMUM_PHP_MEMORY_LIMIT instead.
+ *
+ * @see https://www.drupal.org/node/2909361
  */
-const DRUPAL_MINIMUM_PHP_MEMORY_LIMIT = '64M';
+const DRUPAL_MINIMUM_PHP_MEMORY_LIMIT = Requirements::MINIMUM_PHP_MEMORY_LIMIT;
 
 /**
  * Error reporting level: display no errors.
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 6ce2d81c6d..71026135d1 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -7,6 +7,7 @@
 
 use Drupal\Core\Extension\Dependency;
 use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Requirements;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\OpCodeCache;
@@ -1114,7 +1115,7 @@ function install_profile_info($profile, $langcode = 'en') {
       'description' => '',
       'version' => NULL,
       'hidden' => FALSE,
-      'php' => DRUPAL_MINIMUM_PHP,
+      'php' => Requirements::MINIMUM_PHP,
       'config_install_path' => NULL,
     ];
     $profile_path = drupal_get_path('profile', $profile);
diff --git a/core/install.php b/core/install.php
index c88ffeedaa..ea30919d9c 100644
--- a/core/install.php
+++ b/core/install.php
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Component\Utility\OpCodeCache;
+use Drupal\Core\Requirements;
 
 // Change the directory to the Drupal root.
 chdir('..');
@@ -21,12 +22,11 @@
  */
 define('MAINTENANCE_MODE', 'install');
 
-// Exit early if running an incompatible PHP version to avoid fatal errors.
-// The minimum version is specified explicitly, as DRUPAL_MINIMUM_PHP is not
-// yet available. It is defined in bootstrap.inc, but it is not possible to
-// load that file yet as it would cause a fatal error on older versions of PHP.
-if (version_compare(PHP_VERSION, '5.5.9') < 0) {
-  print 'Your PHP installation is too old. Drupal requires at least PHP 5.5.9. See the <a href="https://www.drupal.org/requirements">system requirements</a> page for more information.';
+// Checking minimum PHP version to avoid fatal errors. The minimum version is
+// specified in the Drupal\Core\Requirements class.
+require_once __DIR__ . '/lib/Drupal/Core/Requirements.php';
+if (version_compare(PHP_VERSION, Requirements::MINIMUM_PHP) < 0) {
+  print 'Your PHP installation is too old. Drupal requires at least PHP ' . Requirements::MINIMUM_PHP . '. See the <a href="https://www.drupal.org/requirements">system requirements</a> page for more information.';
   exit;
 }
 
@@ -40,5 +40,5 @@
 }
 
 // Start the installer.
-require_once $root_path . '/core/includes/install.core.inc';
+require_once __DIR__ . '/includes/install.core.inc';
 install_drupal($class_loader);
diff --git a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php
index 7db535b350..cfb3cdd6f0 100644
--- a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php
+++ b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Requirements;
 use Drupal\Core\State\StateInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 
@@ -22,7 +23,7 @@ class ModuleExtensionList extends ExtensionList {
     'description' => '',
     'package' => 'Other',
     'version' => NULL,
-    'php' => DRUPAL_MINIMUM_PHP,
+    'php' => Requirements::MINIMUM_PHP,
   ];
 
   /**
diff --git a/core/lib/Drupal/Core/Extension/ProfileExtensionList.php b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php
index 4f73f9c9cb..9a8070e1a9 100644
--- a/core/lib/Drupal/Core/Extension/ProfileExtensionList.php
+++ b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\Core\Extension;
 
+use Drupal\Core\Requirements;
+
 /**
  * Provides a list of installation profiles.
  */
@@ -16,7 +18,7 @@ class ProfileExtensionList extends ExtensionList {
     'description' => '',
     'package' => 'Other',
     'version' => NULL,
-    'php' => DRUPAL_MINIMUM_PHP,
+    'php' => Requirements::MINIMUM_PHP,
   ];
 
   /**
diff --git a/core/lib/Drupal/Core/Extension/ThemeHandler.php b/core/lib/Drupal/Core/Extension/ThemeHandler.php
index 4258fda9fa..95392e54b4 100644
--- a/core/lib/Drupal/Core/Extension/ThemeHandler.php
+++ b/core/lib/Drupal/Core/Extension/ThemeHandler.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Extension\Exception\UninstalledExtensionException;
 use Drupal\Core\Extension\Exception\UnknownExtensionException;
+use Drupal\Core\Requirements;
 use Drupal\Core\State\StateInterface;
 
 /**
@@ -278,7 +279,7 @@ public function rebuildThemeData() {
       'description' => '',
       'features' => $this->defaultFeatures,
       'screenshot' => 'screenshot.png',
-      'php' => DRUPAL_MINIMUM_PHP,
+      'php' => Requirements::MINIMUM_PHP,
       'libraries' => [],
     ];
 
diff --git a/core/lib/Drupal/Core/Extension/module.api.php b/core/lib/Drupal/Core/Extension/module.api.php
index 5685f19d41..66b1b58f8f 100644
--- a/core/lib/Drupal/Core/Extension/module.api.php
+++ b/core/lib/Drupal/Core/Extension/module.api.php
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Database\Database;
+use Drupal\Core\Requirements;
 use Drupal\Core\Url;
 use Drupal\Core\Utility\UpdateException;
 
@@ -940,8 +941,8 @@ function hook_requirements($phase) {
     'title' => t('PHP'),
     'value' => ($phase == 'runtime') ? \Drupal::l(phpversion(), new Url('system.php')) : phpversion(),
   ];
-  if (version_compare(phpversion(), DRUPAL_MINIMUM_PHP) < 0) {
-    $requirements['php']['description'] = t('Your PHP installation is too old. Drupal requires at least PHP %version.', ['%version' => DRUPAL_MINIMUM_PHP]);
+  if (version_compare(phpversion(), Requirements::MINIMUM_PHP) < 0) {
+    $requirements['php']['description'] = t('Your PHP installation is too old. Drupal requires at least PHP %version.', ['%version' => Requirements::MINIMUM_PHP]);
     $requirements['php']['severity'] = REQUIREMENT_ERROR;
   }
 
diff --git a/core/lib/Drupal/Core/Requirements.php b/core/lib/Drupal/Core/Requirements.php
new file mode 100644
index 0000000000..77fa384ae1
--- /dev/null
+++ b/core/lib/Drupal/Core/Requirements.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Drupal\Core;
+
+/**
+ * Defines PHP-related constants for use with Drupal.
+ */
+final class Requirements {
+
+  /**
+   * Minimum supported version of PHP.
+   */
+  const MINIMUM_PHP = '5.5.9';
+
+  /**
+   * Minimum recommended value of PHP memory_limit.
+   *
+   * 64M was chosen as a minimum requirement in order to allow for additional
+   * contributed modules to be installed prior to hitting the limit. However,
+   * 40M is the target for the Standard installation profile.
+   */
+  const MINIMUM_PHP_MEMORY_LIMIT = '64M';
+
+  /**
+   * Minimum recommended version of PHP.
+   *
+   * Sites installing Drupal on PHP versions lower than this will see a warning
+   * message, but Drupal can still be installed. Used for (e.g.) PHP versions
+   * that have reached their EOL or will in the near future.
+   */
+  const RECOMMENDED_PHP = '7.1';
+
+}
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 2cddcbfff9..17d4eb51ce 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -19,6 +19,7 @@
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Field\BaseFieldDefinition;
+use Drupal\Core\Requirements;
 use Drupal\Core\Site\Settings;
 use Drupal\Core\StreamWrapper\PrivateStream;
 use Drupal\Core\StreamWrapper\PublicStream;
@@ -184,22 +185,22 @@ function system_requirements($phase) {
     ];
   }
 
-  if (version_compare($phpversion, DRUPAL_MINIMUM_PHP) < 0) {
-    $requirements['php']['description'] = t('Your PHP installation is too old. Drupal requires at least PHP %version.', ['%version' => DRUPAL_MINIMUM_PHP]);
+  if (version_compare($phpversion, Requirements::MINIMUM_PHP) < 0) {
+    $requirements['php']['description'] = t('Your PHP installation is too old. Drupal requires at least PHP %version.', ['%version' => Requirements::MINIMUM_PHP]);
     $requirements['php']['severity'] = REQUIREMENT_ERROR;
     // If PHP is old, it's not safe to continue with the requirements check.
     return $requirements;
   }
-  if ((version_compare($phpversion, DRUPAL_RECOMMENDED_PHP) < 0) && ($phase === 'install' || $phase === 'runtime')) {
+  if ((version_compare($phpversion, Requirements::RECOMMENDED_PHP) < 0) && ($phase === 'install' || $phase === 'runtime')) {
     // Warn if still on PHP 5. If at least PHP 7.0, relax from "warning" to
     // "info", and show it at runtime only, to not scare users while installing.
     if (version_compare($phpversion, '7.0') < 0) {
-      $requirements['php']['description'] = t('Drupal will drop support for this version on March 6, 2019. Upgrade to PHP version %recommended or higher to ensure your site can receive updates and remain secure. See <a href="http://php.net/supported-versions.php">PHP\'s version support documentation</a> and the <a href=":php_requirements">Drupal 8 PHP requirements handbook page</a> for more information.', ['%recommended' => DRUPAL_RECOMMENDED_PHP, ':php_requirements' => 'https://www.drupal.org/docs/8/system-requirements/php']);
+      $requirements['php']['description'] = t('Drupal will drop support for this version on March 6, 2019. Upgrade to PHP version %recommended or higher to ensure your site can receive updates and remain secure. See <a href="http://php.net/supported-versions.php">PHP\'s version support documentation</a> and the <a href=":php_requirements">Drupal 8 PHP requirements handbook page</a> for more information.', ['%recommended' => Requirements::RECOMMENDED_PHP, ':php_requirements' => 'https://www.drupal.org/docs/8/system-requirements/php']);
       $requirements['php']['severity'] = REQUIREMENT_WARNING;
     }
     else {
       if ($phase === 'runtime') {
-        $requirements['php']['description'] = t('It is recommended to upgrade to PHP version %recommended or higher for the best ongoing support.  See <a href="http://php.net/supported-versions.php">PHP\'s version support documentation</a> and the <a href=":php_requirements">Drupal 8 PHP requirements handbook page</a> for more information.', ['%recommended' => DRUPAL_RECOMMENDED_PHP, ':php_requirements' => 'https://www.drupal.org/docs/8/system-requirements/php']);
+        $requirements['php']['description'] = t('It is recommended to upgrade to PHP version %recommended or higher for the best ongoing support.  See <a href="http://php.net/supported-versions.php">PHP\'s version support documentation</a> and the <a href=":php_requirements">Drupal 8 PHP requirements handbook page</a> for more information.', ['%recommended' => Requirements::RECOMMENDED_PHP, ':php_requirements' => 'https://www.drupal.org/docs/8/system-requirements/php']);
         $requirements['php']['severity'] = REQUIREMENT_INFO;
       }
     }
@@ -384,16 +385,16 @@ function system_requirements($phase) {
     'value' => $memory_limit == -1 ? t('-1 (Unlimited)') : $memory_limit,
   ];
 
-  if (!Environment::checkMemoryLimit(DRUPAL_MINIMUM_PHP_MEMORY_LIMIT, $memory_limit)) {
+  if (!Environment::checkMemoryLimit(Requirements::MINIMUM_PHP_MEMORY_LIMIT, $memory_limit)) {
     $description = [];
     if ($phase == 'install') {
-      $description['phase'] = t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the installation process.', ['%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT]);
+      $description['phase'] = t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the installation process.', ['%memory_minimum_limit' => Requirements::MINIMUM_PHP_MEMORY_LIMIT]);
     }
     elseif ($phase == 'update') {
-      $description['phase'] = t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the update process.', ['%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT]);
+      $description['phase'] = t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the update process.', ['%memory_minimum_limit' => Requirements::MINIMUM_PHP_MEMORY_LIMIT]);
     }
     elseif ($phase == 'runtime') {
-      $description['phase'] = t('Depending on your configuration, Drupal can run with a %memory_limit PHP memory limit. However, a %memory_minimum_limit PHP memory limit or above is recommended, especially if your site uses additional custom or contributed modules.', ['%memory_limit' => $memory_limit, '%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT]);
+      $description['phase'] = t('Depending on your configuration, Drupal can run with a %memory_limit PHP memory limit. However, a %memory_minimum_limit PHP memory limit or above is recommended, especially if your site uses additional custom or contributed modules.', ['%memory_limit' => $memory_limit, '%memory_minimum_limit' => Requirements::MINIMUM_PHP_MEMORY_LIMIT]);
     }
 
     if (!empty($description['phase'])) {
diff --git a/core/tests/Drupal/Tests/ComposerIntegrationTest.php b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
index 2d34dcb74c..d23b859489 100644
--- a/core/tests/Drupal/Tests/ComposerIntegrationTest.php
+++ b/core/tests/Drupal/Tests/ComposerIntegrationTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests;
 
 use Composer\Semver\Semver;
+use Drupal\Core\Requirements;
 
 /**
  * Tests Composer integration.
@@ -11,15 +12,6 @@
  */
 class ComposerIntegrationTest extends UnitTestCase {
 
-  /**
-   * The minimum PHP version supported by Drupal.
-   *
-   * @see https://www.drupal.org/docs/8/system-requirements/web-server
-   *
-   * @todo Remove as part of https://www.drupal.org/node/2908079
-   */
-  const MIN_PHP_VERSION = '5.5.9';
-
   /**
    * Gets human-readable JSON error messages.
    *
@@ -206,7 +198,7 @@ public function testMinPHPVersion() {
     // with Drupal's minimum PHP requirement.
     foreach ($lock['packages'] as $package) {
       if (isset($package['require']['php'])) {
-        $this->assertTrue(Semver::satisfies(static::MIN_PHP_VERSION, $package['require']['php']), $package['name'] . ' has a PHP dependency requirement of "' . $package['require']['php'] . '"');
+        $this->assertTrue(Semver::satisfies(Requirements::MINIMUM_PHP, $package['require']['php']), $package['name'] . ' has a PHP dependency requirement of "' . $package['require']['php'] . '"');
       }
     }
   }
diff --git a/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php b/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
index f22419f985..feaf34eefa 100644
--- a/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php
@@ -366,6 +366,3 @@ protected function systemListReset() {
 if (!defined('DRUPAL_PHP_FUNCTION_PATTERN')) {
   define('DRUPAL_PHP_FUNCTION_PATTERN', '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*');
 }
-if (!defined('DRUPAL_MINIMUM_PHP')) {
-  define('DRUPAL_MINIMUM_PHP', '5.3.10');
-}
