Skip to content

maint: move to PHP 8.4, Apache 2.4.68 馃崚 - #363

Merged
mcdurdin merged 1 commit into
stagingfrom
maint/cherry-pick/php-84
Sep 10, 2026
Merged

maint: move to PHP 8.4, Apache 2.4.68 馃崚#363
mcdurdin merged 1 commit into
stagingfrom
maint/cherry-pick/php-84

Conversation

@mcdurdin

@mcdurdin mcdurdin commented Sep 9, 2026

Copy link
Copy Markdown
Member

As the PHP 7.4 image broke with missing security dependencies in Debian Bullseye (at time of writing, as yet unresolved), resolved to complete the upgrade to PHP 8.4 rather than try to build a stopgap solution based on existing PHP 7.4. Unfortunately PHP 8.4 has a number of incompatible changes in 8.x series, documented at https://www.php.net/manual/en/migration80.incompatible.php. I have audited some of the more obvious ones -- but there is potential for other breakages which we will need to monitor.

Changes required:

  • move from PHP 7.4 to PHP 8.4 Docker image (upgrades Debian, Apache, PHP as major components)
  • update apt process for accessing Microsoft packages on Debian
  • add libicu-dev and install intl php extension (not included by default in the 8.4 image)
  • dependency upgrades forced for Sentry, phpunit, curl-client, guzzlehttp/guzzle
  • removed unused parsedown, parsedown-extra
  • addition of BCTLS flag to .htaccess mod_rewrite rules (https://stackoverflow.com/q/75684314/1836776)
  • Add unit tests to verify several endpoints - focus on spaces in parameters where they are allowed (e.g. legacy keyboard ids)
  • Fixup call to str_getcsv
  • Other minor tweaks as required

Cherry-pick-of: #362
See-also: keymanapp/keyman.com#828
See-also: keymanapp/s.keyman.com#1712
See-also: keymanapp/keymanweb.com#210
See-also: keymanapp/help.keyman.com#2655
Relates-to: keymanapp/keymanweb.com#209
Test-bot: skip

As the PHP 7.4 image broke with missing security dependencies in Debian
Bullseye (at time of writing, as yet unresolved), resolved to complete
the upgrade to PHP 8.4 rather than try to build a stopgap solution based
on existing PHP 7.4. Unfortunately PHP 8.4 has a number of incompatible
changes in 8.x series, documented at
https://www.php.net/manual/en/migration80.incompatible.php. I have
audited some of the more obvious ones -- but there is potential for
other breakages which we will need to monitor.

Changes required:
* move from PHP 7.4 to PHP 8.4 Docker image (upgrades Debian, Apache,
  PHP as major components)
* update apt process for accessing Microsoft packages on Debian
* add libicu-dev and install intl php extension (not included by default
  in the 8.4 image)
* dependency upgrades forced for Sentry, phpunit, curl-client,
  guzzlehttp/guzzle
* removed unused parsedown, parsedown-extra
* addition of BCTLS flag to .htaccess mod_rewrite rules
  (https://stackoverflow.com/q/75684314/1836776)
* Add unit tests to verify several endpoints - focus on spaces in
  parameters where they are allowed (e.g. legacy keyboard ids)
* Fixup call to `str_getcsv`
* Other minor tweaks as required

See-also: keymanapp/keyman.com#828
See-also: keymanapp/s.keyman.com#1712
See-also: keymanapp/keymanweb.com#210
See-also: keymanapp/help.keyman.com#2655
Relates-to: keymanapp/keymanweb.com#209
Test-bot: skip
@keymanapp-test-bot

Copy link
Copy Markdown

User Test Results

Test specification and instructions

User tests are not required

@keymanapp-test-bot keymanapp-test-bot Bot added this to the B19S1 milestone Sep 9, 2026
@github-actions github-actions Bot added the maint label Sep 9, 2026
@github-project-automation github-project-automation Bot moved this to Todo in Keyman Sep 9, 2026
@mcdurdin
mcdurdin marked this pull request as ready for review September 10, 2026 07:30
@mcdurdin
mcdurdin merged commit 886c75b into staging Sep 10, 2026
6 checks passed
@mcdurdin
mcdurdin deleted the maint/cherry-pick/php-84 branch September 10, 2026 07:31
@github-project-automation github-project-automation Bot moved this from Todo to Done in Keyman Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants