-
Epic
-
Resolution: Done
-
Minor
-
Future Dev, 4.2
-
MOODLE_402_STABLE
-
MOODLE_404_STABLE
-
Prepare Moodle for PHP 8.3
-
(image taken after completion, now php83 is being tested everywhere, GHA, CIs... so no need for those custom tests and branches anymore)
The, hopefully small, epic to turn Moodle ready for PHP 8.3.
Target: Agreed to be Moodle 4.4 and up (as of January 15th 2024).
When: Being cristal clear (aka transparent), the ideal target release for this is Moodle 4.4.0 (aka, supported since the very beginning of the branch), but be warned that full support may arrive later in any Moodle 4.4.x minor release in the branch, depending of a number of factors (extensions availability and bugs, 3rd part libraries, last minute surprises...).
Some initial links:
- Main changes explained: https://stitcher.io/blog/new-in-php-83 and https://php.watch/versions/8.3.
- Changes detailed: https://github.com/php/php-src/blob/PHP-8.3/UPGRADING.
- Accepted RFCs: https://wiki.php.net/rfc#php_83.
Some basic requirements for this:
- Get unit and acceptance tests passing against all databases (may imply the need of upgrading phpunit/behat...).
- Check that all the change details have been reviewed and fixed (attached file). Note that, until release, this file is considered WIP and subject to changes! Reference: https://github.com/php/php-src/blob/PHP-8.3/UPGRADING (
MDL-81325) - Ensure that older versions of Moodle don't work with PHP 8.3 (
MDL-76441) - (link) - get moodle-php-apache docker images working with the new php version.
- Verify that php-parallel-lint/php-parallel-lint and others pass for all php versions (
MDL-76442) - (added the related ones) There are a few - search in the tracker for any issue created about "php 8.3" or "php83". Add them to this epic after analysing them.
- Link any issue that remains open in the previous PHP Epic.
- FINAL: Verify that the apache logs are clean of PHP 8.3 notices/warnings/errors (
MDL-76444) - FINAL: Verify that all the issues found by the dev version of PHPCompatibility are fixed or false positives (
MDL-81194). - FINAL: When CIs are passing consistently, put all the MySQL (W) jobs in the target branches (6 per branch) of the Epic to, manually, use the new PHP version (note that later, in the TODOs, we'll undo this manual configuration).
- FINAL: Get gha working with the new php version (
MDL-76443). - FINAL: phpcs.xml.dist : Ensure that the testVersion config setting matches the range of PHP supported versions in all the affected branches. Note that for master branch we leave the range open always (
MDL-78496). - FINAL: (part of the epic testing instructions). Verify that both install and upgrade from lowest possible site works ok, without any error/warning/notice. Both cli and web (
MDL-81479). - FINAL: (part of the epic testing instructions). Update docs (and others, see testing instructions) once this is ready. If needed to, ask for the creation of the next major release page in devdocs (example issue / example PR).
- ...
And some tasks to do once this is upstream:
TODO 1: Review the travis (only moodle-plugin-ci) and/or github actions configuration for various repositories. The new PHP version needs to be covered. Known to need review / fix repos include:
- moodle_docker
- moodle-ci-runner
- nightlyjobs (don't forget to delete any manual configuration that has been done in advance for the, usually, MySQL (W) jobs in the Epic target branches).
- moodle-cs
- moodle-plugin-ci
- local_codechecker
- local_moodlecheck
- local_ci - Not strictly required. Checked, but best if we stay (in tests) with php82, as far as there are a bunch of them testing old branches with php83 warnings. Own local_ci seems ready, only tests require old stuff.
- moodle-tool_pluginskel (#122)
- moodle-webservice_xmlrpc
- ...
- has a clone
-
MDL-80117 Prepare Moodle for PHP 8.4
- Open
- has a non-specific relationship to
-
MDL-77101 Using soft reserved words (numeric, enum) could break in the future
- Open
-
MDL-77458 Add phpcs testVersions to .phpcs.xml
- Closed
-
MDL-76423 Enable backtrace parameter redaction for sensitive function calls
- Open
- has been marked as being related by
-
MDL-76724 Decide Moodle 4.3 requirements and push them to environment.xml (due date: 2023-05-08)
- Closed
-
MDL-78496 Decide Moodle 4.4 requirements and push them to environment.xml (due date for voting: 2023-11-13)
- Closed
-
MDL-79809 Decide Moodle 4.5 requirements and push them to environment.xml (due date: 2024-05-27)
- Closed
- is a clone of
-
MDL-76405 Prepare Moodle for PHP 8.2
- Closed
- is child of
-
IDEA-147 PHP version 8.2 compatibility
- Closed
-
IDEA-167 PHP version 8.3 compatibility
- Closed
- will be (partly) resolved by
-
MDL-81254 Unclosed Gradebook recordsets from users iterator
- Closed
-
MDL-81246 Detect invalid resources before trying to close them in SQLServer driver
- Closed
-
MDL-81252 Investigate a way to check unclosed recordsets
- Open
-
MDL-67733 Upgrade Google APIs client library to latest version
- Development in progress
-
MDL-81266 Bump behat and phpunit (composer) to current ones (PHP 8.3 / Moodle 4.4)
- Closed