Problem/Motivation

We are using PHP 7.4 on Debian. PHP 7.4 is unsupported by upstream as of today but Debian will maintain it until 2026 (Debian 11 EOL).
The Drupal status report displays an error saying:

Your PHP installation is too old. Drupal requires at least PHP 8.0.

The main problem this causes is that our CI checks if drush rq returns any error and the pipeline fails if it does.
We don't want to ignore errors altogether but we don't want to consider this an error because we know we are using a maintained version.

Steps to reproduce

  1. Install the Debian php7.4 package.
  2. Install Drupal 9.
  3. Browse to /admin/reports/status.

Proposed resolution

#5. Use drush core:requirements has a --ignore option: https://www.drush.org/latest/commands/core_requirements/

#3307248: Special case Ubuntu PHP versions for some system_requirements() warnings has some discussion about detecting versions maintained by Debian or Ubuntu.
In the mean time, we could add a setting that turns this error into a warning.

Issue fork drupal-3324058

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

prudloff created an issue. See original summary.

cilefen’s picture

longwave’s picture

You could use hook_requirements_alter() in a custom module to alter the severity of this requirement, or remove it entirely. I am not sure this is something we want to be supporting in core.

jan.mashat’s picture

We came across this warning today, but I'm having trouble deciphering which version of "Drupal requires at least PHP 8.0."

Based on the official PHP requirements, PHP 8.0 is recommended for Drupal 9 - while PHP 7.4 is still supported.

larowlan’s picture

I think #4 is the answer here, we don't really want to special case things

#4 could even be a contrib module

prudloff’s picture

Based on the official PHP requirements, PHP 8.0 is recommended for Drupal 9 - while PHP 7.4 is still supported.

We were a bit surprised too (because we are not used to new errors appearing without upgrading anything) but the error appears when Drupal detects that a PHP version is not supported base on its EOL date: https://git.drupalcode.org/project/drupal/-/blob/f339daf71b0fa703c80501e...

larowlan’s picture

Any objection to marking this won't fix?

As per #4 there are ways to suppress it already

prudloff’s picture

Fair enough, I understand why you don't want this in core.

We thought about publishing a contrib module but in the end, this is tied to a particular use case (and is also temporary because because we want to upgrade PHP in case a future security update requires PHP 8) so I think it should go in a custom module.

gaëlg’s picture

For anyone meaning to implement hook_requirements_alter(), note that it's not available before 9.5-rc1 (#309040: Add hook_requirements_alter()), and not yet invoked by drush (https://github.com/drush-ops/drush/pull/5327) nor on DB update (#3324995: hook_requirements_alter() is not invoked on update).

But drush core:requirements has a --ignore option: https://www.drush.org/latest/commands/core_requirements/

+1 for "won't fix" though

5’s picture

IMHO, Drupal 9 should display a warning and not an error in all cases as PHP 7.4 seems to be still supported officially by Drupal 9.
2 occurences of PHP 7.4 found in recent release and none of them anonce that its support was dropped:
- https://www.drupal.org/project/drupal/releases/9.4.0
- https://www.drupal.org/project/drupal/releases/9.5.0
The documentation also doesn't relate the support was dropped neither : https://www.drupal.org/docs/system-requirements/php-requirements.

Actually, many OS in LTS version include a supported PHP 7.4. For example, the popular Ubuntu 20.04 will support PHP 7.4 until 2025. I think I remember this fact was written in a previous version of https://www.drupal.org/docs/system-requirements/php-requirements

In my company, we used to relied on the PHP 7.4 support in order to concentrate our D10 upgrade efforts in 2023: we will migrate PHP to 8.X for our websites along with the upgrade to Drupal 10.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

5’s picture

To continue the precedent comment, examples about Ubuntu: PHP 7.4 is maintained by Ubuntu 20.04 and will be freely until 2025. See there that, like many other distributions, "For each Ubuntu LTS release, Canonical maintains the Base Packages and provides security updates, including kernel livepatching, for a period of ten years.". And see here that the PHP 7.2 version embeded in Ubuntu 18.04 is still effectively maintained.

And here is the change that introduced the "error" level automatically on PHP versions: https://www.drupal.org/node/3261447

jweowu’s picture

Category: Feature request » Bug report
Priority: Normal » Major

I'm marking this as a bug and bumping the priority to "major" for the reasons stated in #3328940: Drupal 9.4.x incorrectly reporting PHP 8 as a requirement:

as Drupal 9 does NOT require PHP 8, telling me that it does is not merely bad information, but furthermore has a major impact of indicating to users that they need to change their hosting when they may have no such need at all (I've marked this issue as "Major" on this basis, because hosting changes can be a major endeavour, and so this is going to cause many people a lot of unnecessary worry).

and:

> we want people to be thinking about moving off PHP 7

That's fine, and I support encouraging people to think about that -- but don't do it by lying to them.

Warn them that PHP 7 is EOL. Tell them that they will need PHP 8 in order to upgrade to Drupal 10 (which they will need to do by date X). Tell them that they need to be planning for this move. Do all of those things; but don't lie to them and tell them that their current version of Drupal needs a newer version of PHP than it actually does (and that, by implication, it is really only working by accident at the moment -- or causing them to wonder whether it even is all working, and spend hours trying to validate all of the functionality).

Please also understand that you're effectively telling PHP 7.4 users that they might break their currently-working web site if they apply a Drupal core security update, because even if their site is accidentally working at present, any new Drupal 9 code might not work correctly in anything other than PHP 8.

Supplying accurate information is important at all times, but never more so than when you're presenting error messages.

I also disagree with adding some kind of option to be truthful whilst defaulting to a lie. That doesn't help with the primary issue here. The correct messaging should be the default messaging (and there's no need for any new option if that bug is fixed).

finn lewis’s picture

I am trying to run update.php on a site running Drupal 9.5.3 and 7.4.3-4ubuntu2.17

It seems that the PHP version warning is preventing me running update.php.

I am seeing this message on a Drupal

Warnings found
PHP
7.4.3-4ubuntu2.17
Your PHP installation is too old. Drupal requires at least PHP 8.0. It is recommended to upgrade to PHP version 8.1.6 or higher for the best ongoing support. See PHP's version support documentation and the Drupal PHP requirements page for more information.

And then below, just

Check the messages and try again.

It doesn't look like there are any other warnings or errors, so it seems this is blocking running update.php.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

Issue summary: View changes
catch’s picture

This should only be a warning on update, and update.php should allow you to continue despite warnings.

@Finn Lewis Have you actually tried clicking the 'try again' link? That should take you to the next page if only warnings are shown on the first one. The fact it doesn't inform you about this seems like a usability issue we could open a separate issue for, since it doesn't only result due to PHP version.

I think it would be fine to show a warning instead of error on runtime too. The main place we wanted an error was on install, precisely because it's harder to migrate hosting once you have a site installed, by showing an error on install, people can sort things out before they have a database and files to worry about.

prudloff changed the visibility of the branch 3324058-add-a-way to hidden.

prudloff’s picture

Status: Active » Closed (won't fix)

Looking back at this, I agree that special cases like this should not be added to core. It could lead to users running unsecure PHP versions or being unable to apply security updates.

If you are sure your PHP version is maintained, you can alter the error with hook_requirements_alter().