Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Problem/Motivation
Per #2917655-62: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4, it was suggested we open an issue discussing bumping minimum PHP to 7.3.
Proposed resolution
- Bump minimum PHP to 7.3.
- Bump default PHP version for 9x branch to 7.3.
Remaining tasks
Roll patch
User interface changes
n/a
API changes
n/a
Data model changes
n/a
Release notes snippet
Minimum PHP version changed to 7.3.
Comment | File | Size | Author |
---|---|---|---|
#37 | 3106075-37.patch | 17.27 KB | Krzysztof Domański |
#37 | interdiff-36-37.txt | 727 bytes | Krzysztof Domański |
#36 | 3106075-36.patch | 16.68 KB | Krzysztof Domański |
#5 | 3106075.patch | 16.86 KB | heddn |
Comments
Comment #2
mondrakeIf we do this, then I think it would also make sense to remove PHPUnit 6 support.
Comment #3
Wim LeersComment #4
heddnDoes this need to update https://www.drupal.org/node/3089166 or should this be a new CR?
Comment #5
heddnGet the conversation going.
Comment #6
heddnre #2: I think that should be a follow-up. Traditionally adjusting dependencies has been done separately from the version bump. It reduces scope. See #3079791: Bump Drupal's minimum PHP version to 7.2 as soon as 9.0.x is branched (a higher version may be required later) for example.
Comment #7
mondrake@heddn sure a follow-up - was just wondering if it makes sense, since if this gets through than de-facto PHPUnit 6 will no longer be used for testing on DrupalCI (run-tests.sh upgrades PHPUnit to 7 when PHP is 7.3+ in HEAD already, in D8 as well as D9).
Comment #8
heddnHmm, that failure in #5 means we'd also need to bump the default PHP test version for 9.x.
Comment #9
greg.1.anderson CreditAttribution: greg.1.anderson at Pantheon commented+1. The PHP 7.2 EOL is 30 November 2020, and is already out of active support. It makes sense to require 7.3 as the minimum for Drupal 9.
Comment #10
heddnAdded bumping default php testing version to the IS.
Comment #11
heddnIt was asked if 7.3.0 is the "right" 7.3 version to list as minimum. Hopefully we get some type of responses to https://twitter.com/lucashedding/status/1216801312857346050
Comment #12
greg.1.anderson CreditAttribution: greg.1.anderson at Pantheon commented@heddn In #3103255: Add upper PHP constraint to composer.json and/or the installer, we desire that the PHP minimum version in the
require
element also be the same value that is written to the config.platform.php value. This means that the minimum version of PHP should not be 7.3.0, but rather should be the largest patch version of PHP required as the minimum PHP version of any of our dependencies.If none of our dependencies require 7.3, then 7.3.0 is fine to use as the minimum.
Comment #13
Gábor Hojtsy@Charlie ChX Negyesi responded with a pointer to #2917655-43: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4 which was in comment to Drupal 8 raising requirements but some of it may still stand.
Comment #14
Ghost of Drupal PastYes, thanks for raising that.
See https://github.com/symfony/symfony/issues/29459 with lots of pointers to serialize issues some of which are still open.
Besides BatchStorage there's https://www.drupal.org/project/drupal/issues/3011684 still open just for core.
I still believe it is doable by 2020 summer but we need to carefully search our issue queues for more serialize bug reports and make them release blockers.
Comment #15
andypostSerialization is another challenge for 9.x so better to fix it early
Comment #16
xjmGood idea. Anything that's a critical PHP 7.3 serialization bug would be a release blocker (or beta blocker, rather), but not non-critical ones.
Comment #17
xjmThis will probably need all the signoffs prior to commit. FWIW, I'm more and more +1 for this based on the data and discussion in #2917655: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4 and #2938725: [tracking issue] Track hosting provider support for PHP 7.
I think this would be a good should-have for the alpha as well, so adding it there.
Comment #18
Gábor Hojtsy@catch asked for product manager feedback. As a product manager I think doing this sooner than later is better because in alpha/beta we would get the bugs ironed out, versus doing it later would postpone the pain.
That said, if we make all PHP 7.3 blockers a blocker of beta (which in itself is IMHO a good idea), how does the still open Symfony issues reflect on our ability to release a beta in early March? I looked at the two open Symfony issues linked from https://github.com/symfony/symfony/issues/29459 (which itself was linked above):
In the single Drupal issue linked #3011684: Properly serialize \Drupal\Core\TempStore\PrivateTempStore the test only patch itself passes, so the problem is not reproduced currently.
To me these currently feel like a "there may or may not be something there", would need much more proof to block anything on them.
Comment #19
catchI don't think this impacts the decision here very much, since PHP 7.3 will be the only supported PHP version in November this year anyway - i.e. even if we decided to support PHP 7.2 after all for some reason, PHP 7.3 support would still be critical (and also for Drupal 8.9).
However also unless we actually have core test failures or a reproducible critical bug, PHP version issues probably shouldn't block release milestones since we often don't have control over them if they require a fix to PHP itself (as some issues in dev versions of PHP have).
Comment #20
heddnA consideration about blocking beta or other concerns w/ php 7.3...
Unless we are going to hard limit to 7.2, folks are going to update to 7.3 (or 7.4) whether we put 7.2, 7.3 or 7.4 as the minimum version. I feel like that part of the discussion isn't as big a deal to the, "is php 7.3 a good minimum version" discussion. That's more part of the, "does drupal 8/9 runs on php 7.3" discussion. Which is an entirely different, important and valid discussion. But it shouldn't have undue influence on what we list as the minimum PHP version that Drupal 9 supports.
Comment #21
xjmThanks @heddn. The point is that if we require PHP 7.3. and there is a critical bug that does not happen on 7.2, that's in a way comparable to an upgrade path or other 9.0.x-only critical regression. Because in Drupal 8 you can stick with 7.2 but Drupal 9 forces you to update to 7.3, so there's a critical regression between versions. Again, this isn't just any bugs with the PHP version, just critical ones.
Comment #22
webchickAs another product manager, I would expect when making a decision like this, we would cross-reference PHP 7.3 support in the major Linux distros.
https://trends.builtwith.com/server for some reason lists IPv6 as an operating system (?!) but if you filter that out, it seems the most popular distros across the top 1m sites are Ubuntu, CentOS, and Debian (there might be better sources for this info; this is just one I happen to know). So we should check what version of PHP the latest stable + LTS version of each of those distros looks like.
Comment #23
mondrakeFiled #3106918: Drop support of PHPUnit 6 in Drupal 9 because it will never get used anyway as a follow-up.
Comment #24
Gábor Hojtsy@webchick: we have been doing that discussion about distros (Ubuntu, Debian, etc) and impact in #2917655: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4 for months (including surveying Acquia partners and posting that at #2917655-54: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4, and data tracking at #2938725: [tracking issue] Track hosting provider support for PHP 7 for even longer :) Those are tracking/policy issues, so this is where the patch got posted.
Comment #25
webchickOk great, that was not at all clear from the issue summary but +1.
Comment #26
Ghost of Drupal PastGenerally speaking, the serialize bugs are such that we have complete control over them.
Comment #27
eelkeblokHas it been considered that this will impact the ease with which sites can update from D8 to D9? Many D8 sites will run on PHP 7.2, currently. Even though the PHP project themselves do not support 7.2 from november onwards, security support is usually continued by OS vendors for some time, making PHP 7.2 still a viable alternative, from a hosting POV. (We've actually had pushback from the hoster when we told them our desire to update from PHP 7.0 because "it is supported by the OS vendor for years to come"; they have a completely different perspective).
Edit: Seems like this is all discussed in great detail over in #2917655: [9.4.x only] Drop official PHP 7.3 support in Drupal 9.4.
Comment #28
Gábor Hojtsy@eelkeblok: I see you found where its discussed :) The problem is not really operating system support.
Drupal depends on all kinds of PHP libraries. Those libraries have their own security processes and PHP support timelines. If one of them comes out with a security fix on their supported branch(es) and that fix is only available on code requiring PHP 7.3, then Drupal needs to raise its PHP version requirement in a matter of hours on a security release Wednesday. That would be definitely orders of magnitude more complicated for Drupal users as opposed to needing to run a higher PHP version from the get go with Drupal 9.
So we are attempting to raise PHP requirements as high as practically possible for Drupal 9 out of the gate, and may still need to raise it further before Drupal 9 goes end of life. Like we did with Drupal 8's PHP requirements, we'd rather raise in a pre-announced and planned fashion and not being forced to do it on a security release day. That however means we need to require a relatively high version from the start so we don't hit that bump too soon.
Comment #29
eelkeblokMakes sense. Thanks for the clarification. Does sound like "the other side of the coin", though :)
Comment #30
catchIt is, there are trade-offs in both directions.
The big difference is that Drupal 8 users on PHP 7.2 have the entire 8.9.x support cycle to update to PHP 7.3 or higher (i.e. until December 2021), whereas someone who installed Drupal 9 with PHP 7.2 might have to update to PHP 7.3 within months or weeks if we dropped it in 9.1 or 9.2.
Comment #31
Gábor HojtsyLet's do this then :) I left the other two types of core committer tags but Angie and I both support this as Drupal core product managers.
Comment #32
catchBoth me and xjm have been +1 to this on the other issue, so removing 'needs release manager review' too.
Comment #33
larowlanAfter reading the linked issues (And linking a few more) as well as the symfony issue - and taking into account that we would make any critical bugs blockers, I'm comfortable removing the 'Needs FM review' tag.
Can we get a follow up to remove phpunit 6 support and shims?
Comment #34
longwave@larowlan the followup is already open at #3106918: Drop support of PHPUnit 6 in Drupal 9 because it will never get used anyway (and we really should get #3063182: Remove PHPUnit 4.8 class aliasing BC layer in as well!)
Comment #35
larowlanThanks, sorry
Comment #36
Krzysztof DomańskiRe-rolled
Comment #37
Krzysztof DomańskiUpdate core/INSTALL.txt file. PHP 7 ChangeLog.
Comment #38
Gábor HojtsyGood catch!
Comment #40
catchCommitted 9ed2caa and pushed to 9.0.x. Thanks!
Comment #42
quietone CreditAttribution: quietone at PreviousNext commentedI'm checking D9/D10 issues that are closed and tagged for change record updates. I have read the CR and it looks correct to me. REmoving tag.