Skip to content

Migrate to PHP 8.4.27 (preprod) - #159

Merged
alexandrewavelet merged 12 commits into
preprodfrom
chore/php-8.4-preprod
Oct 21, 2026
Merged

alexandrewavelet merged 12 commits into
preprodfrom
chore/php-8.4-preprod

Conversation

@alexandrewavelet

Copy link
Copy Markdown
Collaborator

Why

Forward-port of #158 (PHP 8.4.27 migration, targeting main) to preprod, so both branches carry the same code, Dockerfile, CI and docs. Prod switches its runtime first; preprod keeps PHP 7.4 until AlteredOps PR 2.

What changes

  • Merge of chore/php-8.4 (not a cherry-pick): the 4 code fixes (str_getcsv escape, NULL slug in RSS, __nav_* → acNav*, cURL docblocks), php:8.4.27-apache Dockerfile, deploy.yml / plugins-ci.yml on 8.4, docs. The merge applied cleanly onto preprod's newer plugins-ci.yml. It also brings the main commits that preprod did not have yet (includes/listmonk.php).
  • CI matrix: the "PHP lint and plugin PHP tests" job runs on ['7.4', '8.4'] while preprod still runs 7.4 (the aggregated Plugins CI check covers both legs). To drop once preprod has switched.
  • docker-compose.stack.yml: the ownership mock moves from php:8.3-cli-alpine to php:8.4-cli-alpine (consistency).

Merge order

Merge after #158 is on main and prod has been validated on 8.4.27 (AlteredOps PR 1). Merging deploys the code to preprod, which still runs 7.4 — the code is 7.4-compatible. AlteredOps PR 2 then switches the preprod runtime.

How it was verified

  • php -l of the whole tree under 8.4 and 7.4: clean.
  • tests/run.php 114/114, core-altered-cards 70/70, equinox-deck-import 21/21 on both 7.4 and 8.4.
  • The e2e job of this PR runs on the php:8.4.27-apache image.

julesduroux and others added 11 commits September 29, 2026 19:19
Transform article in a newsletter
str_getcsv() must receive its escape argument explicitly in PHP 8.4,
rss.php could pass a NULL slug to rawurlencode() (deprecated since 8.1),
and the azure theme used the __ prefix PHP reserves for itself. All
changes run unchanged on PHP 7.4, which preprod keeps until its own
runtime switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
php:7.4-apache is Debian 11, whose security mirror is gone, and PHP 7.4
has been end-of-life since 2022. The image, the e2e stack and the
workflows now use PHP 8.4.27 (supported until the end of 2028).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Prod moves to PHP 8.4.27 first while preprod keeps 7.4 until its own
runtime switch, so the PHP job runs on both versions to catch code that
would only break one of them. The ownership mock of the e2e stack moves
to 8.4 for consistency.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The decks API image of the e2e stack is built from a pinned commit but on
the latest FrankenPHP base, whose Mercure now refuses publisher_jwt /
subscriber_jwt outside compatibility mode: the container exits at start
and the Playwright job fails before any test, whatever the PHP version.
Same setting as preprod (#131).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot added a commit that referenced this pull request Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

⚠️ Loading: CLS over budget

Not a failure: the CLS of a screen varies from one CI run to the next. Each screenshot is the settled page, the boxes that moved drawn on it (dashed: before, solid: after). Frame by frame: npm run loading:timeline -- <screen> in tests/e2e. Run: https://github.com/Altered-Community/alteredcore-website/actions/runs/39667580447

desktop · editor, Main, second visit at 1024 px: skeleton until the first screen, styled, no layout shift

CLS 0.2211 (budget 0.01)

Shifts
1843 ms  0.0004
  x600 y111 87×24 → x522 y111 165×24 (ac-badge.ac-badge.ac-badge--orange < button.legality < app-deck-bar.reduced)
2024 ms  0.2207
  x24 y306 652×494 → x24 y791 652×9 (h2.overline < app-hand-stats < div.hand)
  x356 y533 320×256 → x0 y0 0×0
  x24 y533 320×256 → x0 y0 0×0
  x357 y474 318×46 → x0 y0 0×0
  x373 y421 286×36 → x0 y0 0×0

github-actions Bot added a commit that referenced this pull request Oct 21, 2026
@alexandrewavelet
alexandrewavelet merged commit 3f66f81 into preprod Oct 21, 2026
9 checks passed
@alexandrewavelet
alexandrewavelet deleted the chore/php-8.4-preprod branch October 21, 2026 23:28
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.

2 participants