Skip to content

Drop PHP 7.4, 8.0, and 8.1 support - #699

Merged
jaydrogers merged 3 commits into
release/webserver-improvements-and-fixesfrom
drop-7.4-and-8.0
Sep 9, 2026
Merged

Drop PHP 7.4, 8.0, and 8.1 support#699
jaydrogers merged 3 commits into
release/webserver-improvements-and-fixesfrom
drop-7.4-and-8.0

Conversation

@jaydrogers

@jaydrogers jaydrogers commented Sep 9, 2026

Copy link
Copy Markdown
Member

Why we created this PR

Debian stopped signing packages for Debian 11 (Bullseye). Its final bullseye-security release file expired on 2026-09-07, and every Bullseye build in our matrix now fails (full run →):

E: Release file for http://deb.debian.org/debian-security/dists/bullseye-security/InRelease is expired (invalid since 17h 41min 40s). Updates for this repository will not be applied.
ERROR: process "/bin/sh -c docker-php-serversideup-dep-install-debian ..." did not complete successfully: exit code: 100

This isn't us choosing to stop. With no signed repository, there's no trusted source to pull patched packages from, so a patched image can't be built at all.

PHP 7.4 and 8.0 only ever shipped on Bullseye and Alpine 3.16, so they go with it. PHP 8.1 has been unbuildable since 2025-12-16, when upstream removed the 8.1 branch — we're cleaning it up here so our config matches reality.

Your existing tags still work

Every 7.4, 8.0, and 8.1 tag stays pullable on Docker Hub and GitHub Packages, frozen at its last successful build. What they no longer get is security updates — for PHP or for the OS underneath.

Why we updated SECURITY.md

Our old policy said we publish EOL images "so legacy applications have a path into containers," but never said where that ends. It reads like we'd rebuild Bullseye forever.

The rule is now explicit: we publish images on an EOL base only for as long as that distribution still serves a signed package repository. Once signing stops, we stop rebuilding and the tags freeze.

We also added EOL versions and the legacy-modernization path — a table of what stopped, when, and why, so nobody has to dig through a workflow run to find out.

What this PR does

Dropped

  • PHP 7.4, 8.0, and 8.1
  • Debian Bullseye and Alpine 3.16 through 3.22
  • Supported matrix is now PHP 8.2 – 8.5 on bookworm, trixie, alpine3.23, and alpine3.24

Docs

  • Rewrote the EOL section in SECURITY.md and added the EOL versions table
  • Added "Dropped PHP versions" to the major version migrations guide
  • Updated Choosing an image with current versions, OS list, and a warning for anyone landing on an old tag
  • Updated the upgrade guide, contributing guide, README, and bug report template

Build scripts

  • Updated assemble-docker-tags.sh, generate-matrix.sh, get-php-versions.sh, and get-nginx-versions.sh for the new matrix
  • generate-matrix.sh now tolerates minor versions with no base_os or patch_versions, so a version can sit in config before it's buildable

Groundwork for PHP 8.6

  • Added docker-php-serversideup-install-php-extensions, which lets a build swap one extension for a different source (like redis=phpredis/phpredis@develop). Declared per minor version in php-versions-base-config.yml, passed to the build as PHP_EXTENSION_OVERRIDES
  • Added the 8.6 matrix entry, commented out. php:8.6-rc no longer ships pecl/pear and install-php-extensions doesn't support 8.6 yet, so no PECL extension installs (Add PHP 8.6-rc support #698)

If you're on 7.4, 8.0, or 8.1

Move to PHP 8.2 or newer on bookworm, trixie, alpine3.23, or alpine3.24.

- Added a section on dropped PHP versions in the major version migrations guide, detailing the last built dates and reasons for PHP 8.1, 8.0, and 7.4.
- Updated the Docker tags documentation to reflect changes in supported OS versions and PHP patch versions.
- Modified the assemble-docker-tags script to align with the new PHP versioning scheme.
- Revised the PHP versions base config to remove deprecated versions and adjust supported operating systems.
- Updated development scripts to reflect the new PHP versioning and OS options.
- Enhanced the generate-matrix script to ensure compatibility with the updated PHP versions and OS configurations.
- Adjusted the get-nginx-versions and get-php-versions scripts to accommodate the removal of older OS versions.
@jaydrogers
jaydrogers changed the base branch from main to release/webserver-improvements-and-fixes September 9, 2026 14:38
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 9, 2026

Copy link
Copy Markdown

Deploying serversideup-php with  Cloudflare Pages  Cloudflare Pages

Latest commit: 566f90e
Status: ✅  Deploy successful!
Preview URL: https://ee2ffa4e.serversideup-php.pages.dev
Branch Preview URL: https://drop-7-4-and-8-0.serversideup-php.pages.dev

View logs

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying serversideup-php with  Cloudflare Pages  Cloudflare Pages

Latest commit: 5df9867
Status:⚡️  Build in progress...

View logs

@jaydrogers
jaydrogers merged commit a8e29aa into release/webserver-improvements-and-fixes Sep 9, 2026
138 of 139 checks passed
@jaydrogers
jaydrogers deleted the drop-7.4-and-8.0 branch September 9, 2026 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant