From 6469e9a1fb99359b7835faeb2a4c08a7502d8527 Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Fri, 29 Mar 2024 08:52:44 +0000
Subject: [PATCH] Issue #3413268 by BramDriesen, longwave, Spokje, catch,
 mondrake, quietone, andypost: Add PHP 8.3 requirement to Drupal 11.0.x

---
 composer.json                                 |   6 +-
 composer.lock                                 | 169 +-----------------
 .../Metapackage/CoreRecommended/composer.json |   1 -
 .../PinnedDevDependencies/composer.json       |   1 -
 core/INSTALL.txt                              |   4 +-
 core/composer.json                            |   4 +-
 core/lib/Drupal.php                           |   4 +-
 .../Drupal/Component/Annotation/composer.json |   2 +-
 .../Drupal/Component/Assertion/composer.json  |   2 +-
 .../Component/ClassFinder/composer.json       |   2 +-
 .../Drupal/Component/Datetime/composer.json   |   2 +-
 .../DependencyInjection/composer.json         |   2 +-
 core/lib/Drupal/Component/Diff/composer.json  |   4 +-
 .../Drupal/Component/Discovery/composer.json  |   2 +-
 .../Component/EventDispatcher/composer.json   |   2 +-
 .../Drupal/Component/FileCache/composer.json  |   2 +-
 .../Component/FileSecurity/composer.json      |   2 +-
 .../Drupal/Component/FileSystem/composer.json |   2 +-
 .../Component/FrontMatter/composer.json       |   2 +-
 .../Drupal/Component/Gettext/composer.json    |   2 +-
 core/lib/Drupal/Component/Graph/composer.json |   2 +-
 .../Component/HttpFoundation/composer.json    |   2 +-
 .../Drupal/Component/PhpStorage/composer.json |   2 +-
 .../lib/Drupal/Component/Plugin/composer.json |   2 +-
 .../Component/ProxyBuilder/composer.json      |   2 +-
 .../lib/Drupal/Component/Render/composer.json |   2 +-
 .../Component/Serialization/composer.json     |   2 +-
 .../Component/Transliteration/composer.json   |   2 +-
 .../Drupal/Component/Utility/composer.json    |   2 +-
 core/lib/Drupal/Component/Uuid/composer.json  |   2 +-
 .../Drupal/Component/Version/composer.json    |   2 +-
 .../Drupal/Core/Utility/PhpRequirements.php   |   2 -
 core/modules/system/system.install            |  13 --
 .../Functional/System/PhpRequirementTest.php  |  12 +-
 34 files changed, 41 insertions(+), 225 deletions(-)

diff --git a/composer.json b/composer.json
index e676386da3df..914a188cac20 100644
--- a/composer.json
+++ b/composer.json
@@ -47,7 +47,9 @@
         "symfony/polyfill-php73": "*",
         "symfony/polyfill-php74": "*",
         "symfony/polyfill-php80": "*",
-        "symfony/polyfill-php81": "*"
+        "symfony/polyfill-php81": "*",
+        "symfony/polyfill-php82": "*",
+        "symfony/polyfill-php83": "*"
     },
     "minimum-stability": "dev",
     "prefer-stable": true,
@@ -55,7 +57,7 @@
         "preferred-install": "dist",
         "sort-packages": true,
         "platform": {
-            "php": "8.1.0"
+            "php": "8.3.0"
         },
         "allow-plugins": {
             "composer/installers": true,
diff --git a/composer.lock b/composer.lock
index 74d95e19bb0f..bd50d7a5dc71 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "479da193f70d9ec14eb448a2d7360a05",
+    "content-hash": "335c0228fb93c94583fe0750ff7a37ab",
     "packages": [
         {
             "name": "asm89/stack-cors",
@@ -495,7 +495,7 @@
             "dist": {
                 "type": "path",
                 "url": "core",
-                "reference": "45312e105697022dac062ee5a5fd7a4a0ad4162c"
+                "reference": "be48b81e356839257d4e279060da3dd05a009da1"
             },
             "require": {
                 "asm89/stack-cors": "^2.1",
@@ -522,9 +522,9 @@
                 "masterminds/html5": "^2.7",
                 "mck89/peast": "^1.14",
                 "pear/archive_tar": "^1.4.14",
-                "php": ">=8.1.0",
+                "php": ">=8.3.0",
                 "psr/log": "^3.0",
-                "sebastian/diff": "^4",
+                "sebastian/diff": "^4|^5",
                 "symfony/console": "^6.4",
                 "symfony/dependency-injection": "^6.4",
                 "symfony/event-dispatcher": "^6.4",
@@ -3387,86 +3387,6 @@
             ],
             "time": "2023-07-28T09:04:16+00:00"
         },
-        {
-            "name": "symfony/polyfill-php83",
-            "version": "v1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php83.git",
-                "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
-                "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-php80": "^1.14"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php83\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-08-16T06:22:46+00:00"
-        },
         {
             "name": "symfony/process",
             "version": "v6.4.0",
@@ -9378,85 +9298,6 @@
             ],
             "time": "2023-12-01T09:25:07+00:00"
         },
-        {
-            "name": "symfony/polyfill-php82",
-            "version": "v1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php82.git",
-                "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/7716bea9c86776fb3362d6b52fe1fc9471056a49",
-                "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php82\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php82/tree/v1.28.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-08-25T17:27:25+00:00"
-        },
         {
             "name": "theseer/tokenizer",
             "version": "1.2.2",
@@ -9622,7 +9463,7 @@
     "platform": [],
     "platform-dev": [],
     "platform-overrides": {
-        "php": "8.1.0"
+        "php": "8.3.0"
     },
     "plugin-api-version": "2.6.0"
 }
diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json
index 1979056e3f2a..a9b40b7cf9cd 100644
--- a/composer/Metapackage/CoreRecommended/composer.json
+++ b/composer/Metapackage/CoreRecommended/composer.json
@@ -49,7 +49,6 @@
         "symfony/polyfill-intl-idn": "~v1.28.0",
         "symfony/polyfill-intl-normalizer": "~v1.28.0",
         "symfony/polyfill-mbstring": "~v1.28.0",
-        "symfony/polyfill-php83": "~v1.28.0",
         "symfony/process": "~v6.4.0",
         "symfony/psr-http-message-bridge": "~v6.4.0",
         "symfony/routing": "~v6.4.1",
diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json
index 755744e6652c..269433bfa47f 100644
--- a/composer/Metapackage/PinnedDevDependencies/composer.json
+++ b/composer/Metapackage/PinnedDevDependencies/composer.json
@@ -85,7 +85,6 @@
         "symfony/dom-crawler": "v6.4.0",
         "symfony/lock": "v6.4.0",
         "symfony/phpunit-bridge": "v6.4.1",
-        "symfony/polyfill-php82": "v1.28.0",
         "theseer/tokenizer": "1.2.2",
         "webflo/drupal-finder": "1.2.2",
         "webmozart/assert": "1.11.0"
diff --git a/core/INSTALL.txt b/core/INSTALL.txt
index 9e1f2e5a924a..a484cc10793d 100644
--- a/core/INSTALL.txt
+++ b/core/INSTALL.txt
@@ -15,7 +15,7 @@ QUICKSTART
 ----------------------
 
 Prerequisites:
-- PHP 8.1.0 (or greater) (https://php.net).
+- PHP 8.3.0 (or greater) (https://php.net).
 
 In the instructions below, replace the version x.y.z with the specific version
 you wish to download. Example: 8.6.0.zip. You can find the latest stable version
@@ -48,7 +48,7 @@ Drupal requires:
 - A web server with PHP support, for example:
   - Apache 2.4.7 (or greater) (http://httpd.apache.org/).
   - Nginx 1.1 (or greater) (http://nginx.com/).
-- PHP 8.1.0 (or greater) (http://php.net/).
+- PHP 8.3.0 (or greater) (http://php.net/).
 - One of the following databases:
   - MySQL 5.7.8 (or greater) (http://www.mysql.com/).
   - MariaDB 10.3.7 (or greater) (https://mariadb.org/). MariaDB is a fully
diff --git a/core/composer.json b/core/composer.json
index b3467458517f..af803fa74f15 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -17,7 +17,7 @@
         "ext-SPL": "*",
         "ext-tokenizer": "*",
         "ext-xml": "*",
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/console": "^6.4",
         "symfony/dependency-injection": "^6.4",
         "symfony/event-dispatcher": "^6.4",
@@ -47,7 +47,7 @@
         "pear/archive_tar": "^1.4.14",
         "psr/log": "^3.0",
         "mck89/peast": "^1.14",
-        "sebastian/diff": "^4"
+        "sebastian/diff": "^4|^5"
     },
     "conflict": {
         "drush/drush": "<12.4.3"
diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php
index c42f5043d348..ceb4c53d5ec9 100644
--- a/core/lib/Drupal.php
+++ b/core/lib/Drupal.php
@@ -113,7 +113,7 @@ class Drupal {
    * - Once in the error message printed to the user immediately after.
    * Remember to update both whenever this constant is updated.
    */
-  const MINIMUM_PHP = '8.1.0';
+  const MINIMUM_PHP = '8.3.0';
 
   /**
    * Minimum recommended value of PHP memory_limit.
@@ -131,7 +131,7 @@ class Drupal {
    * 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 = '8.2.0';
+  const RECOMMENDED_PHP = '8.3.0';
 
   /**
    * The currently active container object, or NULL if not initialized yet.
diff --git a/core/lib/Drupal/Component/Annotation/composer.json b/core/lib/Drupal/Component/Annotation/composer.json
index 7aaffc37748e..3575798a7c15 100644
--- a/core/lib/Drupal/Component/Annotation/composer.json
+++ b/core/lib/Drupal/Component/Annotation/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "doctrine/annotations": "^2.0",
         "doctrine/lexer": "^2.0",
         "drupal/core-class-finder": "11.x-dev",
diff --git a/core/lib/Drupal/Component/Assertion/composer.json b/core/lib/Drupal/Component/Assertion/composer.json
index 49e2e0e75bbc..e68799602875 100644
--- a/core/lib/Drupal/Component/Assertion/composer.json
+++ b/core/lib/Drupal/Component/Assertion/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/ClassFinder/composer.json b/core/lib/Drupal/Component/ClassFinder/composer.json
index d31e53402777..9d0355af9245 100644
--- a/core/lib/Drupal/Component/ClassFinder/composer.json
+++ b/core/lib/Drupal/Component/ClassFinder/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/Datetime/composer.json b/core/lib/Drupal/Component/Datetime/composer.json
index 91bd608f5570..3f99849600c5 100644
--- a/core/lib/Drupal/Component/Datetime/composer.json
+++ b/core/lib/Drupal/Component/Datetime/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-utility": "11.x-dev"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/DependencyInjection/composer.json b/core/lib/Drupal/Component/DependencyInjection/composer.json
index 9558355aeea4..d6a847a80c40 100644
--- a/core/lib/Drupal/Component/DependencyInjection/composer.json
+++ b/core/lib/Drupal/Component/DependencyInjection/composer.json
@@ -13,7 +13,7 @@
         "source": "https://www.drupal.org/project/drupal/git-instructions"
     },
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/dependency-injection": "^6.4",
         "symfony/service-contracts": "v3.4.0"
     },
diff --git a/core/lib/Drupal/Component/Diff/composer.json b/core/lib/Drupal/Component/Diff/composer.json
index 57a07592ff85..3fd31e6c78fb 100644
--- a/core/lib/Drupal/Component/Diff/composer.json
+++ b/core/lib/Drupal/Component/Diff/composer.json
@@ -7,8 +7,8 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
-        "sebastian/diff": "^4"
+        "php": ">=8.3.0",
+        "sebastian/diff": "^4|^5"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/Discovery/composer.json b/core/lib/Drupal/Component/Discovery/composer.json
index 4a9343967682..8bc8d69047e8 100644
--- a/core/lib/Drupal/Component/Discovery/composer.json
+++ b/core/lib/Drupal/Component/Discovery/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-file-cache": "11.x-dev",
         "drupal/core-serialization": "11.x-dev"
     },
diff --git a/core/lib/Drupal/Component/EventDispatcher/composer.json b/core/lib/Drupal/Component/EventDispatcher/composer.json
index 79ed3a24cfdf..b492f29621cf 100644
--- a/core/lib/Drupal/Component/EventDispatcher/composer.json
+++ b/core/lib/Drupal/Component/EventDispatcher/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/dependency-injection": "^6.4",
         "symfony/event-dispatcher": "^6.4",
         "symfony/event-dispatcher-contracts": "v3.4.0"
diff --git a/core/lib/Drupal/Component/FileCache/composer.json b/core/lib/Drupal/Component/FileCache/composer.json
index c262143bb5c8..456e26532439 100644
--- a/core/lib/Drupal/Component/FileCache/composer.json
+++ b/core/lib/Drupal/Component/FileCache/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/FileSecurity/composer.json b/core/lib/Drupal/Component/FileSecurity/composer.json
index 880de76a6c58..3408fa0aecc0 100644
--- a/core/lib/Drupal/Component/FileSecurity/composer.json
+++ b/core/lib/Drupal/Component/FileSecurity/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/FileSystem/composer.json b/core/lib/Drupal/Component/FileSystem/composer.json
index 975c5d554a34..029cb3682a56 100644
--- a/core/lib/Drupal/Component/FileSystem/composer.json
+++ b/core/lib/Drupal/Component/FileSystem/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/FrontMatter/composer.json b/core/lib/Drupal/Component/FrontMatter/composer.json
index 9baa12c9d92d..da56de5b7efa 100644
--- a/core/lib/Drupal/Component/FrontMatter/composer.json
+++ b/core/lib/Drupal/Component/FrontMatter/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-serialization": "11.x-dev"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Gettext/composer.json b/core/lib/Drupal/Component/Gettext/composer.json
index 0db3a4bc30b6..94e3e6c137de 100644
--- a/core/lib/Drupal/Component/Gettext/composer.json
+++ b/core/lib/Drupal/Component/Gettext/composer.json
@@ -8,7 +8,7 @@
         "source": "https://www.drupal.org/project/drupal/git-instructions"
     },
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-render": "11.x-dev"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Graph/composer.json b/core/lib/Drupal/Component/Graph/composer.json
index c6c4e2b02ce2..245c41e197e9 100644
--- a/core/lib/Drupal/Component/Graph/composer.json
+++ b/core/lib/Drupal/Component/Graph/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/HttpFoundation/composer.json b/core/lib/Drupal/Component/HttpFoundation/composer.json
index 634267f9b651..5ec33a66051d 100644
--- a/core/lib/Drupal/Component/HttpFoundation/composer.json
+++ b/core/lib/Drupal/Component/HttpFoundation/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/http-foundation": "^6.4"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/PhpStorage/composer.json b/core/lib/Drupal/Component/PhpStorage/composer.json
index 0517f06b0e35..bf7c2d3b42e3 100644
--- a/core/lib/Drupal/Component/PhpStorage/composer.json
+++ b/core/lib/Drupal/Component/PhpStorage/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-file-security": "11.x-dev"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Plugin/composer.json b/core/lib/Drupal/Component/Plugin/composer.json
index bc618403b32a..53c93b6501b6 100644
--- a/core/lib/Drupal/Component/Plugin/composer.json
+++ b/core/lib/Drupal/Component/Plugin/composer.json
@@ -9,7 +9,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/validator": "^6.4"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/ProxyBuilder/composer.json b/core/lib/Drupal/Component/ProxyBuilder/composer.json
index 68b9be598cd8..1359626f2ccb 100644
--- a/core/lib/Drupal/Component/ProxyBuilder/composer.json
+++ b/core/lib/Drupal/Component/ProxyBuilder/composer.json
@@ -8,7 +8,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/Render/composer.json b/core/lib/Drupal/Component/Render/composer.json
index 338eb5135b2b..83a3bf936a3c 100644
--- a/core/lib/Drupal/Component/Render/composer.json
+++ b/core/lib/Drupal/Component/Render/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "drupal/core-utility": "11.x-dev"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Serialization/composer.json b/core/lib/Drupal/Component/Serialization/composer.json
index 60e1c028bb9b..f000d6892b39 100644
--- a/core/lib/Drupal/Component/Serialization/composer.json
+++ b/core/lib/Drupal/Component/Serialization/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "symfony/yaml": "^6.4"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Transliteration/composer.json b/core/lib/Drupal/Component/Transliteration/composer.json
index 7e42ba488ab7..165fc69d99c4 100644
--- a/core/lib/Drupal/Component/Transliteration/composer.json
+++ b/core/lib/Drupal/Component/Transliteration/composer.json
@@ -18,6 +18,6 @@
         ]
     },
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     }
 }
diff --git a/core/lib/Drupal/Component/Utility/composer.json b/core/lib/Drupal/Component/Utility/composer.json
index f20959e228f8..bde91afb9ea5 100644
--- a/core/lib/Drupal/Component/Utility/composer.json
+++ b/core/lib/Drupal/Component/Utility/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0",
+        "php": ">=8.3.0",
         "masterminds/html5": "^2.7"
     },
     "autoload": {
diff --git a/core/lib/Drupal/Component/Uuid/composer.json b/core/lib/Drupal/Component/Uuid/composer.json
index 0e021a23c446..1b1d5ea2e25a 100644
--- a/core/lib/Drupal/Component/Uuid/composer.json
+++ b/core/lib/Drupal/Component/Uuid/composer.json
@@ -8,7 +8,7 @@
         "source": "https://www.drupal.org/project/drupal/git-instructions"
     },
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Component/Version/composer.json b/core/lib/Drupal/Component/Version/composer.json
index d7785a3a49ab..221f2eb1b027 100644
--- a/core/lib/Drupal/Component/Version/composer.json
+++ b/core/lib/Drupal/Component/Version/composer.json
@@ -7,7 +7,7 @@
     "homepage": "https://www.drupal.org/project/drupal",
     "license": "GPL-2.0-or-later",
     "require": {
-        "php": ">=8.1.0"
+        "php": ">=8.3.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/core/lib/Drupal/Core/Utility/PhpRequirements.php b/core/lib/Drupal/Core/Utility/PhpRequirements.php
index e80882b0bec0..3e5818dd4a16 100644
--- a/core/lib/Drupal/Core/Utility/PhpRequirements.php
+++ b/core/lib/Drupal/Core/Utility/PhpRequirements.php
@@ -31,8 +31,6 @@ final class PhpRequirements {
    *   by the PHP version.
    */
   private static $phpEolDates = [
-    '8.1' => '2024-11-25',
-    '8.2' => '2025-12-08',
     '8.3' => '2026-11-23',
   ];
 
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 26cc25777424..e4d6cd07ba83 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -327,19 +327,6 @@ function system_requirements($phase) {
   elseif ($phase === 'runtime' && version_compare($phpversion, \Drupal::RECOMMENDED_PHP) < 0) {
     $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 PHP requirements</a> page for more information.', ['%recommended' => \Drupal::RECOMMENDED_PHP, ':php_requirements' => 'https://www.drupal.org/docs/system-requirements/php-requirements']);
     $requirements['php']['severity'] = REQUIREMENT_INFO;
-
-    // PHP 8.1.0 through 8.1.5 have a known OPcache bug that can cause fatal
-    // errors, so warn about that when running Drupal on those versions.
-    // @todo Remove this when \Drupal::MINIMUM_PHP is at least 8.1.6 in
-    //   https://www.drupal.org/i/3305726.
-    if (version_compare($phpversion, '8.1.6') < 0) {
-      $requirements['php']['description'] = t('PHP %version has <a href=":bug_url">an OPcache bug that can cause fatal errors with class autoloading</a>. This can be fixed by upgrading to PHP 8.1.6 or later. See <a href="http://php.net/supported-versions.php">PHP\'s version support documentation</a> and the <a href=":php_requirements">Drupal PHP requirements</a> page for more information.', [
-        '%version' => $phpversion,
-        ':bug_url' => 'https://github.com/php/php-src/issues/8164',
-        ':php_requirements' => 'https://www.drupal.org/docs/system-requirements/php-requirements',
-      ]);
-      $requirements['php']['severity'] = REQUIREMENT_WARNING;
-    }
   }
 
   // Test for PHP extensions.
diff --git a/core/modules/system/tests/src/Functional/System/PhpRequirementTest.php b/core/modules/system/tests/src/Functional/System/PhpRequirementTest.php
index 1cd07dd7e73a..497d6d2a1a6e 100644
--- a/core/modules/system/tests/src/Functional/System/PhpRequirementTest.php
+++ b/core/modules/system/tests/src/Functional/System/PhpRequirementTest.php
@@ -74,17 +74,7 @@ public function testStatusPage() {
     // There should be an informational message if the PHP version is below the
     // recommended version.
     if (version_compare($phpversion, \Drupal::RECOMMENDED_PHP) < 0) {
-      // If it's possible to run Drupal on PHP 8.1.0 to 8.1.5, warn about a
-      // bug in OPcache.
-      // @todo Remove this when \Drupal::MINIMUM_PHP is at least 8.1.6 in
-      //   https://www.drupal.org/i/3305726.
-      if (version_compare($phpversion, '8.1.6') < 0) {
-        $this->assertSession()->pageTextContains("PHP $phpversion has an OPcache bug that can cause fatal errors with class autoloading. This can be fixed by upgrading to PHP 8.1.6 or later.");
-        $this->assertSession()->linkExists('an OPcache bug that can cause fatal errors with class autoloading');
-      }
-      else {
-        $this->assertSession()->pageTextContains('It is recommended to upgrade to PHP version ' . \Drupal::RECOMMENDED_PHP . ' or higher');
-      }
+      $this->assertSession()->pageTextContains('It is recommended to upgrade to PHP version ' . \Drupal::RECOMMENDED_PHP . ' or higher');
     }
     // Otherwise, the message should not be there.
     else {
-- 
GitLab