Skip to content

Update FrankenPHP to version 1.13 and adjust Mercure settings for com… - #715

Merged
jaydrogers merged 1 commit into
release/webserver-improvements-and-fixesfrom
fix/frankenphp-1.13-http2-crash
Oct 6, 2026
Merged

jaydrogers merged 1 commit into
release/webserver-improvements-and-fixesfrom
fix/frankenphp-1.13-http2-crash

Conversation

@jaydrogers

Copy link
Copy Markdown
Member

Upgrades the FrankenPHP variation to v1.13.0 and builds it the way the official dunglas/frankenphp image does, with go install from FrankenPHP's own go.mod instead of xcaddy. Follow-up to #713 for #712.

Why

#713 pinned Caddy to 2.11.4 because xcaddy build resolved the latest Caddy at build time, which is how the 2.11.6 HTTP/2 crash reached beta3. FrankenPHP 1.13.0 ships Caddy 2.11.7, which fixes that panic (caddy#8101, fixed in caddy#8107). It also fixes five security advisories. Three of them affect our Linux images: header spoofing through dot-form header names, a CGI path split that ran uploads/a.php for /uploads/a.php.txt/b.php, and putenv() leaking between worker requests.

Upstream hit the same xcaddy problem in php/frankenphp#2685: their xcaddy-built 1.12.7 binaries picked up Mercure 1.0 overnight with no new release. Building with go install takes every module version from caddy/go.sum, so the binary only changes when FRANKENPHP_VERSION does.

We switched to xcaddy in September 2025 after #563, which proposed a builder image for people adding their own Caddy modules (#568). That image was never built, and it doesn't depend on how our binary is built: people adding modules run xcaddy in their own builder stage, which is also how upstream splits it.

Changes

  • FRANKENPHP_VERSION is 1.13.0 and GOLANG_VERSION is 1.27, which FrankenPHP's go.mod now requires. CADDY_VERSION and the hand-pinned Mercure, Vulcain, and cbrotli versions are gone.
  • The build runs upstream's go.sh install from caddy/frankenphp with upstream's -ldflags and cgo flags, then setcap. That adds the things xcaddy skipped: the PGO profile, PHP's hardening flags ($PHP_CFLAGS, $PHP_CPPFLAGS, $PHP_LDFLAGS), the deprecated_topic,deprecated_claim tags for Mercure's compatibility mode, and the full version string. frankenphp version now prints FrankenPHP v1.13.0 PHP 8.4.26 Caddy v2.11.7 instead of a bare Caddy line.
  • The migration guide lists three new breaking changes, and the Mercure log redaction text now says it covers 0.x clients.

What users will notice

  • Mercure: publisher_jwt or subscriber_jwt, including through the mercure array in config/octane.php, now stops FrankenPHP from starting. Moving the keys into an issuer block or adding protocol_version_compatibility 8 fixes it.
  • Request headers: more than 16 KiB gets a 431. 1.12.7 accepted at least 64 KB. Headers with a . in their name are dropped.
  • num_threads: it no longer includes worker threads, so setting it alongside workers starts more threads, or fails if max_threads is lower than the total.

@jaydrogers
jaydrogers marked this pull request as ready for review October 6, 2026 20:18
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Images for PR #715

Build Test Publish
✅ 79 of 79 images built ✅ Every image passed on amd64 and arm64 ✅ Published to serversideup/php-dev

Try it:

docker run --rm -v "$PWD:/var/www/html" -p 8080:8080 serversideup/php-dev:715-8.5-fpm-nginx

Every image is on Docker Hub as serversideup/php-dev:715-<php>-<variation>-<os>. Browse all tags or view the run.

All images with sizes

Sizes are compressed, per architecture.

Variation PHP Base OS amd64 arm64 Image
cli 8.5.11 alpine3.23 50.5 MB 50.4 MB serversideup/php-dev:715-8.5.11-cli-alpine3.23
cli 8.5.11 alpine3.24 50.6 MB 50.4 MB serversideup/php-dev:715-8.5.11-cli-alpine3.24
cli 8.5.11 bookworm 195.1 MB 187.9 MB serversideup/php-dev:715-8.5.11-cli-bookworm
cli 8.5.11 trixie 192.2 MB 184.1 MB serversideup/php-dev:715-8.5.11-cli-trixie
cli 8.4.26 alpine3.23 47.4 MB 47.5 MB serversideup/php-dev:715-8.4.26-cli-alpine3.23
cli 8.4.26 alpine3.24 47.5 MB 47.6 MB serversideup/php-dev:715-8.4.26-cli-alpine3.24
cli 8.4.26 bookworm 191.2 MB 184.3 MB serversideup/php-dev:715-8.4.26-cli-bookworm
cli 8.4.26 trixie 188.3 MB 180.4 MB serversideup/php-dev:715-8.4.26-cli-trixie
cli 8.3.35 alpine3.23 43.4 MB 43.9 MB serversideup/php-dev:715-8.3.35-cli-alpine3.23
cli 8.3.35 alpine3.24 43.5 MB 44.0 MB serversideup/php-dev:715-8.3.35-cli-alpine3.24
cli 8.3.35 bookworm 186.4 MB 179.8 MB serversideup/php-dev:715-8.3.35-cli-bookworm
cli 8.3.35 trixie 183.5 MB 176.0 MB serversideup/php-dev:715-8.3.35-cli-trixie
cli 8.2.34 alpine3.23 42.6 MB 43.1 MB serversideup/php-dev:715-8.2.34-cli-alpine3.23
cli 8.2.34 alpine3.24 42.7 MB 43.2 MB serversideup/php-dev:715-8.2.34-cli-alpine3.24
cli 8.2.34 bookworm 185.4 MB 178.9 MB serversideup/php-dev:715-8.2.34-cli-bookworm
cli 8.2.34 trixie 182.5 MB 175.1 MB serversideup/php-dev:715-8.2.34-cli-trixie
cli 8.1.34 alpine3.22 42.4 MB 43.0 MB serversideup/php-dev:715-8.1.34-cli-alpine3.22
cli 8.1.34 bookworm 185.4 MB 178.7 MB serversideup/php-dev:715-8.1.34-cli-bookworm
cli 8.1.34 trixie 185.2 MB 178.1 MB serversideup/php-dev:715-8.1.34-cli-trixie
fpm 8.5.11 alpine3.23 44.6 MB 44.7 MB serversideup/php-dev:715-8.5.11-fpm-alpine3.23
fpm 8.5.11 alpine3.24 44.6 MB 44.8 MB serversideup/php-dev:715-8.5.11-fpm-alpine3.24
fpm 8.5.11 bookworm 183.3 MB 176.5 MB serversideup/php-dev:715-8.5.11-fpm-bookworm
fpm 8.5.11 trixie 180.4 MB 172.7 MB serversideup/php-dev:715-8.5.11-fpm-trixie
fpm 8.4.26 alpine3.23 42.4 MB 42.7 MB serversideup/php-dev:715-8.4.26-fpm-alpine3.23
fpm 8.4.26 alpine3.24 42.5 MB 42.7 MB serversideup/php-dev:715-8.4.26-fpm-alpine3.24
fpm 8.4.26 bookworm 181.2 MB 174.5 MB serversideup/php-dev:715-8.4.26-fpm-bookworm
fpm 8.4.26 trixie 178.3 MB 170.7 MB serversideup/php-dev:715-8.4.26-fpm-trixie
fpm 8.3.35 alpine3.23 39.3 MB 39.9 MB serversideup/php-dev:715-8.3.35-fpm-alpine3.23
fpm 8.3.35 alpine3.24 39.3 MB 40.0 MB serversideup/php-dev:715-8.3.35-fpm-alpine3.24
fpm 8.3.35 bookworm 178.1 MB 171.8 MB serversideup/php-dev:715-8.3.35-fpm-bookworm
fpm 8.3.35 trixie 175.2 MB 167.9 MB serversideup/php-dev:715-8.3.35-fpm-trixie
fpm 8.2.34 alpine3.23 38.6 MB 39.2 MB serversideup/php-dev:715-8.2.34-fpm-alpine3.23
fpm 8.2.34 alpine3.24 38.6 MB 39.3 MB serversideup/php-dev:715-8.2.34-fpm-alpine3.24
fpm 8.2.34 bookworm 177.4 MB 171.1 MB serversideup/php-dev:715-8.2.34-fpm-bookworm
fpm 8.2.34 trixie 174.5 MB 167.2 MB serversideup/php-dev:715-8.2.34-fpm-trixie
fpm 8.1.34 alpine3.22 38.5 MB 39.2 MB serversideup/php-dev:715-8.1.34-fpm-alpine3.22
fpm 8.1.34 bookworm 177.6 MB 171.1 MB serversideup/php-dev:715-8.1.34-fpm-bookworm
fpm 8.1.34 trixie 177.4 MB 170.4 MB serversideup/php-dev:715-8.1.34-fpm-trixie
fpm-apache 8.5.11 bookworm 189.7 MB 183.3 MB serversideup/php-dev:715-8.5.11-fpm-apache-bookworm
fpm-apache 8.5.11 trixie 186.8 MB 179.6 MB serversideup/php-dev:715-8.5.11-fpm-apache-trixie
fpm-apache 8.4.26 bookworm 187.5 MB 181.3 MB serversideup/php-dev:715-8.4.26-fpm-apache-bookworm
fpm-apache 8.4.26 trixie 184.7 MB 177.5 MB serversideup/php-dev:715-8.4.26-fpm-apache-trixie
fpm-apache 8.3.35 bookworm 184.4 MB 178.6 MB serversideup/php-dev:715-8.3.35-fpm-apache-bookworm
fpm-apache 8.3.35 trixie 181.6 MB 174.8 MB serversideup/php-dev:715-8.3.35-fpm-apache-trixie
fpm-apache 8.2.34 bookworm 183.7 MB 177.9 MB serversideup/php-dev:715-8.2.34-fpm-apache-bookworm
fpm-apache 8.2.34 trixie 180.9 MB 174.1 MB serversideup/php-dev:715-8.2.34-fpm-apache-trixie
fpm-apache 8.1.34 bookworm 183.9 MB 177.9 MB serversideup/php-dev:715-8.1.34-fpm-apache-bookworm
fpm-apache 8.1.34 trixie 183.8 MB 177.3 MB serversideup/php-dev:715-8.1.34-fpm-apache-trixie
fpm-nginx 8.5.11 alpine3.23 50.7 MB 51.2 MB serversideup/php-dev:715-8.5.11-fpm-nginx-alpine3.23
fpm-nginx 8.5.11 alpine3.24 52.1 MB 52.7 MB serversideup/php-dev:715-8.5.11-fpm-nginx-alpine3.24
fpm-nginx 8.5.11 bookworm 191.1 MB 184.7 MB serversideup/php-dev:715-8.5.11-fpm-nginx-bookworm
fpm-nginx 8.5.11 trixie 195.2 MB 187.7 MB serversideup/php-dev:715-8.5.11-fpm-nginx-trixie
fpm-nginx 8.4.26 alpine3.23 48.5 MB 49.2 MB serversideup/php-dev:715-8.4.26-fpm-nginx-alpine3.23
fpm-nginx 8.4.26 alpine3.24 49.9 MB 50.6 MB serversideup/php-dev:715-8.4.26-fpm-nginx-alpine3.24
fpm-nginx 8.4.26 bookworm 189.0 MB 182.7 MB serversideup/php-dev:715-8.4.26-fpm-nginx-bookworm
fpm-nginx 8.4.26 trixie 193.1 MB 185.6 MB serversideup/php-dev:715-8.4.26-fpm-nginx-trixie
fpm-nginx 8.3.35 alpine3.23 45.4 MB 46.4 MB serversideup/php-dev:715-8.3.35-fpm-nginx-alpine3.23
fpm-nginx 8.3.35 alpine3.24 46.8 MB 47.9 MB serversideup/php-dev:715-8.3.35-fpm-nginx-alpine3.24
fpm-nginx 8.3.35 bookworm 185.9 MB 179.9 MB serversideup/php-dev:715-8.3.35-fpm-nginx-bookworm
fpm-nginx 8.3.35 trixie 190.0 MB 182.9 MB serversideup/php-dev:715-8.3.35-fpm-nginx-trixie
fpm-nginx 8.2.34 alpine3.23 44.7 MB 45.7 MB serversideup/php-dev:715-8.2.34-fpm-nginx-alpine3.23
fpm-nginx 8.2.34 alpine3.24 46.1 MB 47.2 MB serversideup/php-dev:715-8.2.34-fpm-nginx-alpine3.24
fpm-nginx 8.2.34 bookworm 185.2 MB 179.2 MB serversideup/php-dev:715-8.2.34-fpm-nginx-bookworm
fpm-nginx 8.2.34 trixie 189.3 MB 182.2 MB serversideup/php-dev:715-8.2.34-fpm-nginx-trixie
fpm-nginx 8.1.34 alpine3.22 44.6 MB 45.8 MB serversideup/php-dev:715-8.1.34-fpm-nginx-alpine3.22
fpm-nginx 8.1.34 bookworm 186.5 MB 180.3 MB serversideup/php-dev:715-8.1.34-fpm-nginx-bookworm
fpm-nginx 8.1.34 trixie 194.0 MB 187.2 MB serversideup/php-dev:715-8.1.34-fpm-nginx-trixie
frankenphp 8.5.11 alpine3.23 79.4 MB 77.0 MB serversideup/php-dev:715-8.5.11-frankenphp-alpine3.23
frankenphp 8.5.11 alpine3.24 79.4 MB 77.1 MB serversideup/php-dev:715-8.5.11-frankenphp-alpine3.24
frankenphp 8.5.11 bookworm 216.9 MB 207.9 MB serversideup/php-dev:715-8.5.11-frankenphp-bookworm
frankenphp 8.5.11 trixie 214.0 MB 204.1 MB serversideup/php-dev:715-8.5.11-frankenphp-trixie
frankenphp 8.4.26 alpine3.23 75.4 MB 73.3 MB serversideup/php-dev:715-8.4.26-frankenphp-alpine3.23
frankenphp 8.4.26 alpine3.24 75.4 MB 73.4 MB serversideup/php-dev:715-8.4.26-frankenphp-alpine3.24
frankenphp 8.4.26 bookworm 213.0 MB 204.2 MB serversideup/php-dev:715-8.4.26-frankenphp-bookworm
frankenphp 8.4.26 trixie 210.1 MB 200.4 MB serversideup/php-dev:715-8.4.26-frankenphp-trixie
frankenphp 8.3.35 alpine3.23 70.5 MB 68.9 MB serversideup/php-dev:715-8.3.35-frankenphp-alpine3.23
frankenphp 8.3.35 alpine3.24 70.6 MB 69.0 MB serversideup/php-dev:715-8.3.35-frankenphp-alpine3.24
frankenphp 8.3.35 bookworm 208.1 MB 199.7 MB serversideup/php-dev:715-8.3.35-frankenphp-bookworm
frankenphp 8.3.35 trixie 205.3 MB 195.9 MB serversideup/php-dev:715-8.3.35-frankenphp-trixie

Updated on every push to this PR.

@jaydrogers
jaydrogers merged commit c02169d into release/webserver-improvements-and-fixes Oct 6, 2026
132 checks passed
@jaydrogers
jaydrogers deleted the fix/frankenphp-1.13-http2-crash branch October 7, 2026 14:09
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