How to Upgrade Moodle to 5.3 LTS: Step-by-Step Guide (From 4.x and 5.0)

A step-by-step guide to upgrading Moodle 4.4, 4.5 or 5.0 to Moodle 5.3 LTS: requirements, plugin checks, the public folder change, CLI commands and common fixes.

MJ
Mihir Jana
·4 May 2026·9 min read
⚡ Quick answer

To upgrade Moodle to 5.3 LTS: confirm you are on Moodle 4.4 or later (older sites go to 4.5 first), move the server to PHP 8.3 or 8.4 and a supported database (PostgreSQL 17, MySQL 8.4 or MariaDB 11.4), check every plugin and theme for a 5.3 version, and rehearse on a copy of production. Then enable maintenance mode, back up the database, moodledata and code, deploy the new code cleanly, point the web server at the public folder with the /r.php routing rule, run admin/cli/upgrade.php, purge caches and test before reopening.

4.4+
oldest version that can upgrade straight to 5.3
PHP 8.3
minimum PHP for Moodle 5.3 (8.4 also supported)
public/
new document root, required since Moodle 5.1
3
backups before you start: database, moodledata, code

Key takeaways

  • Moodle 5.3 upgrades directly from 4.4 or later; older sites need an intermediate step.
  • Upgrade the server first: PHP 8.3+, and PostgreSQL 17, MySQL 8.4 or MariaDB 11.4.
  • Since 5.1 the web server must point at moodle/public, with a fallback rule to /r.php.
  • Check every plugin and theme for a 5.3 version before you schedule the window.
  • Rehearse the full upgrade on a copy of production and time it.
  • Use the CLI: maintenance mode, clean code deploy, upgrade.php, purge caches, test.

Updated October 2026 for Moodle 5.3 LTS (released 5 October 2026). For support dates and which version to choose, see Moodle 5.3 LTS: requirements, support dates and upgrade path.

Before you start: can you upgrade straight to 5.3?

Moodle 5.3 can be upgraded to directly from Moodle 4.4 or later. Older sites need a stop on the way.

You are onRouteNotes
4.1 LTS to 4.3Upgrade to 4.5 LTS first (needs 4.1.2 or later), then to 5.3Two upgrade runs; plan the PHP and database upgrades between them
4.4 or 4.5 LTSDirectly to 5.3You cross every 5.0–5.3 change at once, including the /public folder
5.0 or 5.1Directly to 5.35.0 is no longer supported; treat this as urgent
5.2Directly to 5.3A small jump

Step 0: check the server meets 5.3's requirements

Most delayed upgrades are really server upgrades. Check these first, on a copy of production:

ComponentMoodle 5.3 minimum
PHP8.3 or 8.4, 64-bit, with the sodium extension and max_input_vars of at least 5000
PostgreSQL17
MySQL8.4
MariaDB11.4
SQL Server2019
OracleNot supported (since 5.0)

If you are moving from 4.5, PHP 8.1 or 8.2 and older databases will all need upgrading. Do that work first, on staging, and confirm the current site runs on the new stack before you change Moodle itself.

Step 1: inventory plugins and themes

Go to Site administration > Plugins > Plugins overview and filter to Additional plugins. For each one, find a release that supports 5.3 in the Moodle plugins directory. If a plugin has no compatible version, decide now: replace it, fund an update, or uninstall it before the upgrade.

Also check your theme. Moodle 5.0 moved Boost to Bootstrap 5, and 5.3 removes the Classic theme from core, so older or heavily customised themes are the most common cause of a broken-looking site after upgrade.

Step 2: know what changes between 4.5 and 5.3

  • 5.0: removes the Atto editor, the Chat and Survey activities, Oracle support, CAS authentication, MNet and SQLite; Boost moves to Bootstrap 5.
  • 5.1: all web-accessible files move into a public/ folder, and your web server's document root must point to it. The Section links block is removed and the Social course format is off by default.
  • 5.2: removes the Activities block and the MimeTeX filter (switch to MathJax); the environment check now tests the web server routing rule.
  • 5.3: removes the Classic theme from core, turns new-login notifications on by default and deprecates the MoodleNet integration. If your site has a vendor/ folder, Composer dependencies must be installed as part of the upgrade.

Step 3: rehearse on a copy of production

Restore a recent copy of the database, moodledata and code to a staging server, and run the whole upgrade there first. Time it. The rehearsal tells you how long the maintenance window must be and surfaces plugin or theme problems while nothing is at stake.

Step 4: the production upgrade, command by command

These commands run from the Moodle code folder as the web server user. Paths are examples; adjust them to your server.

4.1 Put the site into maintenance mode

php admin/cli/maintenance.php --enable

4.2 Back up all three parts

The database, the moodledata folder and the current code. Without all three you do not have a real rollback.

# example for MySQL / MariaDB
mysqldump --single-transaction moodle > /backup/moodle-db-$(date +%F).sql
tar -czf /backup/moodledata-$(date +%F).tgz /var/moodledata
tar -czf /backup/moodle-code-$(date +%F).tgz /var/www/moodle

4.3 Put the new code in place cleanly

Deploy Moodle 5.3 into a fresh folder rather than copying it over the old one. Then copy across config.php (it stays in the Moodle root, not in public/) and every additional plugin, in its new location under the 5.3 folder structure.

4.4 Point the web server at public/ and add the routing rule

Set the document root to moodle/public. Moodle's router also needs a fallback rule that sends unknown paths to /r.php: on Apache that is FallbackResource /r.php; on nginx use the equivalent try_files rule from Moodle's web server documentation. The upgrade will not go ahead until the document root is right.

4.5 Install Composer dependencies if your site has a vendor folder

composer install --no-dev --classmap-authoritative

4.6 Run the upgrade and clear caches

php admin/cli/upgrade.php --non-interactive
php admin/cli/purge_caches.php

4.7 Check, then reopen

Log in as an admin and a test learner. Open a course with SCORM, a quiz and an assignment; check the theme, cron, scheduled tasks and the notifications page. Then:

php admin/cli/maintenance.php --disable

Step 5: after the upgrade

  • Watch the error log and cron for the first 48 hours.
  • Re-run your key reports and compare totals with the pre-upgrade copy.
  • Switch on the 5.3 features you want, such as linear course navigation, learning outcomes and the new AI providers, rather than leaving them for later.
  • Write down what you did. On the LTS track, the next major upgrade is roughly two years away, and nobody will remember the details.

Common upgrade problems and fixes

SymptomLikely causeFix
Directory listing or 404s after upgradeDocument root still points to the Moodle root, not public/Point the web server at moodle/public and reload it
Pages load but clean URLs failRouting rule missingAdd FallbackResource /r.php (Apache) or the nginx equivalent
Environment check fails on PHPPHP 8.2 or older, or missing sodiumMove to PHP 8.3 or 8.4 with sodium; set max_input_vars to 5000+
A plugin blocks the upgradeNo 5.3-compatible releaseUpdate, replace or uninstall it, then rerun the upgrade
Theme looks brokenBootstrap 4 theme or Classic themeUpdate the theme or switch to Boost while it is fixed
Missing activities or blocksRemoved in 5.0–5.2 (Chat, Survey, Atto, Activities block)Plan replacements before the upgrade

Want the upgrade handled for you?

We run Moodle upgrades for institutions and companies: server changes, plugin checks, a staging rehearsal, the production window and post-upgrade testing, scheduled around your term or audit calendar. See hosting and DevOps, or read about sizing your Moodle server and Moodle hosting in India.

  1. 1
    Check route and requirements

    Confirm your version can reach 5.3 directly, and that PHP and the database meet 5.3's minimums.

  2. 2
    Inventory plugins and theme

    Find a 5.3-compatible release for every additional plugin and your theme, or plan to replace them.

  3. 3
    Rehearse on staging

    Restore a copy of production and run the full upgrade there. Time it and fix what breaks.

  4. 4
    Upgrade production

    Maintenance mode, three backups, clean code deploy, public/ document root and routing rule, upgrade.php, purge caches.

  5. 5
    Test and reopen

    Check login, courses, SCORM, quizzes, cron and reports before disabling maintenance mode.

Upgrading without preparation

  • Server found too old mid-upgrade
  • Plugins break after reopening
  • public/ change causes 404s
  • No tested way back

A rehearsed upgrade

  • Server upgraded and tested first
  • Every plugin checked for 5.3
  • Document root and routing set in advance
  • Three backups and a timed rollback
💡

Rehearse the rollback too

Before production day, restore yesterday's backup on staging and time it. Knowing the upgrade works is good; knowing you can get back in an hour if it doesn't is better.

ℹ

Need something custom-built?

Have custom plugins or a custom theme that need updating for Moodle 5.3? We update, test and deploy them as part of the upgrade. Book a free demo or email marketing@edzlms.com and we'll scope it with you.

Frequently asked questions

Can I upgrade directly from Moodle 4.5 to 5.3?

Yes. Moodle 5.3 can be upgraded to directly from 4.4 or later, including 4.5 LTS and 5.0. Sites on 4.3 or older need to upgrade to 4.4 or 4.5 first.

What PHP version does Moodle 5.3 need?

PHP 8.3 or 8.4, 64-bit, with the sodium extension and max_input_vars of at least 5000. PHP 8.2 is not enough for 5.3.

Why does my site show errors after upgrading to Moodle 5.1 or later?

Usually because the web server's document root still points to the Moodle root. Since 5.1 it must point to the public folder, and a fallback rule must send unknown paths to /r.php.

Should I upgrade Moodle through the web interface or the CLI?

The CLI is safer and repeatable: it avoids browser timeouts on large sites and gives clear output. Use admin/cli/upgrade.php with maintenance mode enabled.

How long does a Moodle upgrade take?

It depends on database size, plugins and server speed. Rehearse on a copy of production and time it; that measured time plus a buffer is your maintenance window.

What happens to plugins that don't support Moodle 5.3?

They can block the upgrade or break features. Update them, replace them, or uninstall them before upgrading.

Is Moodle 5.3 a long-term support release?

Yes. Moodle 5.3, released on 5 October 2026, is an LTS release with security fixes until 1 October 2029.

Sources

Moodle release notes and documentation for Moodle 5.3, 5.2, 5.1 and 5.0; Moodle docs: Upgrading. Requirements as published for Moodle 5.3, checked October 2026.

Updated 30 October 2026. For more on running Moodle, connect with Mihir Jana on LinkedIn.

Plan your Moodle 5.3 upgrade

Tell us your current version, server and plugin list. We'll give you the upgrade route, the server changes needed and a realistic maintenance window.

Book a Free Demo →

Tags

MoodleUpgradeMoodle 5.0Nginx

See EdzLMS in action.

Book a 45-minute demo tailored to your industry.

Book a Free Demo →