maint: move to PHP 8.4, Apache 2.4.68 - #362
Conversation
User Test ResultsTest specification and instructions User tests are not required |
| 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.
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
b6a75e5 to
a6462ed
Compare
jahorton
left a comment
There was a problem hiding this comment.
It would probably be wise to have someone else give a proper review to this, given it's the api.keyman.com site and therefore the most critical one for these related issues, but LGTM so far as I can tell.
| foreach($data as $line) { | ||
| $sql .= "INSERT $table $coldef VALUES("; | ||
| $row = str_getcsv($line,"\t",'',""); | ||
| # note that \x7f should be an unused character in the source file as |
There was a problem hiding this comment.
This is a change emerging from php 8.4 upgrade: the enclosure parameter is now validated and cannot be an empty string.
| RUN docker-php-ext-install pdo pdo_mysql zip | ||
| RUN docker-php-ext-enable sqlsrv pdo_sqlsrv pdo pdo_mysql | ||
|
|
||
| # Install intl extension |
There was a problem hiding this comment.
intl was not bundled in the php-8.4 image, whereas it was in php-7.4; this also needs libicu-dev
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:
str_getcsvSee-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