maint: move to PHP 8.4, Apache 2.4.68 - #2655
Conversation
User Test ResultsTest specification and instructions User tests are not required |
d8cc711 to
941089d
Compare
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) * dependency upgrades forced for Sentry, phpunit, curl-client, Parsedown * addition of BCTLS flag to .htaccess mod_rewrite rules (https://stackoverflow.com/q/75684314/1836776) * Fixup of several undefined variables (also fixed in keyboards repo) See-also: keymanapp/keyman.com#828 See-also: keymanapp/s.keyman.com#1712 See-also: keymanapp/keymanweb.com#210 Relates-to: keymanapp/keymanweb.com#209 Test-bot: skip
941089d to
db6379e
Compare
| builder_run_action composer-start docker_build_and_start_composer_container | ||
| builder_run_action composer-stop docker_stop_and_cleanup_composer_container |
There was a problem hiding this comment.
Note that these actions depend on an upcoming change to shared-sites. Putting them here for convenience only. They have no other impact.
| $style = 'lang2 {font-size:250%}'; | ||
|
|
||
| $relatedSites = array("$keyman_com/bengali" => "Bengali Keyboards Home"); | ||
| $relatedSites = array("https://keyman.com/bengali" => "Bengali Keyboards Home"); |
There was a problem hiding this comment.
This change has been added because the use of an undefined variable $keyman_com (defined during the header.php import on the following line) generates a higher level warning in PHP 8 which broke CI. But it was always broken of course... I'm not even sure if $relatedSites is currently used?
There was a problem hiding this comment.
Don't we usually keep this a variable so that we can use the staging site variants when staging for an upcoming release?
Wouldn't such a change break that behavior? Is it better to break now, restore later?
(Same issue for each per-keyboard page.)
There was a problem hiding this comment.
This chicken and egg issue. The variable is defined in the file required on the next line. But the relatedSites variable is used on the next line.
It doesn't really matter for these links - they can always point to keyman.com; there's no need for them to ever point to the staging sites.
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
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:
See-also: keymanapp/keyman.com#828
See-also: keymanapp/s.keyman.com#1712
See-also: keymanapp/keymanweb.com#210
Relates-to: keymanapp/keymanweb.com#209
Test-bot: skip