function PhpRequirements::getMinimumSupportedPhp

Same name in other branches
  1. 9 core/lib/Drupal/Core/Utility/PhpRequirements.php \Drupal\Core\Utility\PhpRequirements::getMinimumSupportedPhp()
  2. 11.x core/lib/Drupal/Core/Utility/PhpRequirements.php \Drupal\Core\Utility\PhpRequirements::getMinimumSupportedPhp()

Dynamically identifies the minimum supported PHP version based on the date.

Drupal automatically increases the minimum supported PHP version from \Drupal::MINIMUM_PHP to a newer version after PHP's documented end-of-life date for the previous version.

Below this version:

  • New sites can be installed (to allow update deployment workflows that reinstall sites from configuration), but a warning is displayed in the installer that the PHP version is too old (except within tests).
  • Updates from previous Drupal versions can be run, but users are warned that Drupal no longer supports that PHP version.
  • An error is shown in the status report that the PHP version is too old.

Parameters

\DateTime|null $date: The DateTime to check. Defaults to the current datetime (now) if NULL.

Return value

string The minimum supported PHP version on the date in a PHP-standardized number format supported by version_compare(). For example, '8.0.2' or '8.1'. This will be the lowest PHP version above the minimum PHP version supported by Drupal that is still supported, or the highest known PHP version if no known versions are still supported.

See also

version_compare()

5 calls to PhpRequirements::getMinimumSupportedPhp()
InstallerTestBase::setUpRequirementsProblem in core/tests/Drupal/FunctionalTests/Installer/InstallerTestBase.php
Installer step: Requirements problem.
PhpRequirementsTest::testMinimumSupportedPhp in core/tests/Drupal/Tests/Core/Utility/PhpRequirementsTest.php
Tests the minimum supported PHP for valid scenarios.
PhpRequirementTest::testStatusPage in core/modules/system/tests/src/Functional/System/PhpRequirementTest.php
Tests status report messages regarding the PHP version.
RequirementsPageTrait::updateRequirementsProblem in core/tests/Drupal/Tests/RequirementsPageTrait.php
Handles the update requirements page.
system_requirements in core/modules/system/system.install
Implements hook_requirements().

File

core/lib/Drupal/Core/Utility/PhpRequirements.php, line 72

Class

PhpRequirements
Provides an object for dynamically identifying the minimum supported PHP.

Namespace

Drupal\Core\Utility

Code

public static function getMinimumSupportedPhp(?\DateTime $date = NULL) : string {
    // By default, use the current date (right now).
    $date = $date ?? new \DateTime('now');
    // In case no data are available or all known PHP versions in this class
    // are already end-of-life, default to the version that had the most recent
    // end-of-life (the key of the last element in the sorted array).
    // The string cast ensures the value is a string, even if the PHP EOL date
    // array is empty. As of PHP 8.1, version_compare() no longer accepts NULL
    // as a parameter; empty string must be used instead.
    $lowest_supported_version = (string) array_key_last(static::$phpEolDates);
    // Next, look at versions that are end-of-life after the current date.
    // Find the lowest PHP version that is still supported.
    foreach (static::$phpEolDates as $version => $eol_date) {
        $eol_datetime = new \DateTime($eol_date);
        if ($eol_datetime > $date) {
            // If $version is less than the previously discovered lowest supported
            // version, use $version as the lowest supported version instead.
            if (version_compare($version, $lowest_supported_version) < 0) {
                $lowest_supported_version = $version;
            }
        }
    }
    // If PHP versions older than the Drupal minimum PHP version are still
    // supported, return Drupal minimum PHP version instead.
    if (version_compare($lowest_supported_version, static::$drupalMinimumPhp) < 0) {
        return static::$drupalMinimumPhp;
    }
    // Otherwise, return the lowest supported PHP version.
    return $lowest_supported_version;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.