Upgrading: Difference between revisions

From MoodleDocs
Fixed a couple of links to point to 4.1 issues in the tracker
Added details to "Possible issues that may affect..." section, corrected minimum upgrade version requirement, and updated directory restructure information to link to the 5.1 information.
 
(186 intermediate revisions by 24 users not shown)
Line 1: Line 1:
{{Installing Moodle}}
{{Installing Moodle}}
''This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].''
''This page explains in detail how to upgrade Moodle. For a summary of the process, see [[Upgrade overview]].''
{{Warning|
The directory structure of Moodle files and the security model have changed in 5.1.
1. A new "public" folder has been introduced to contain all web accessible files. Configuration and other sensitive files are now stored outside this folder for better security.
2. You will need to reconfigure your web server to accommodate the security change as part of the upgrade process. See the section below [[Upgrading#Code_directories_restructure|Code directories restructure]].}}
==Check the requirements==
==Check the requirements==
Before upgrading, check that your server meets all requirements for {{Version}} in ''Site administration > Server > [[Environment]]''.  
Before upgrading, check that your server meets all requirements for {{Version}} in ''Site administration > Server > [[Environment]]''.  


See the [{{Release notes}} release notes] in the dev docs for both [{{Release notes}}#Server_requirements server] and [{{Release notes}}#Client_requirements client] software requirements.
See the [{{Release notes}} Moodle {{Version}} release notes] for server and client software requirements.


Notes:
Note: You can only upgrade to Moodle {{Version}} from Moodle 4.4 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/404/en/Upgrading upgrade to 4.4] or later as an intermediate step.
* You can only upgrade to Moodle {{Version}} from Moodle 3.9 or later. If upgrading from earlier versions, you must [https://docs.moodle.org/39/en/Upgrading_to_Moodle_3.9 upgrade to 3.9] as a first step.


==Before upgrading==
==Before upgrading==
'''We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect.'''
'''We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect. See [[Moodle migration|Moodle_migration.]]'''
 
Consider setting the [[upgrade key]] for your site.  The feature has been available for a while.  It is now encouraged for better security.


Consider setting the [[Upgrade key|upgrade key]] for your site.
== Backup important data ==
== Backup important data ==
There are three areas that should be backed up before any upgrade:
There are three areas that should be backed up before any upgrade:
#Moodle software (For example, everything in server/htdocs/moodle)
#Moodle software (For example, everything in server/www/moodle)
#Moodle uploaded files (For example, server/moodledata)
#Moodle uploaded files (For example, server/moodledata)
#Moodle database (For example, your Postgres or MySQL database dump)
#Moodle database (For example, your Postgres or MySQL database dump)
See [[Site backup]] for more specific information.
See [[Site backup]] for more specific information.
== Check for plugin updates ==
== Check for plugin updates ==
If you have [[Automatic updates deployment]] enabled, you will be able to update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Plugins check screen.
If you have [[Automatic updates deployment]] enabled, you can update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the ''Site Administration > Plugins overview'' tool.


If you are updating plugins manually, it is a good moment now to check in the [http://moodle.org/plugins Moodle Plugins directory] whether there is a {{Version}} version available for any plugins (including themes) that you have previously installed on your site. If so, download the plugin package. In the next step, you will copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).
If you are updating plugins manually, now is a good time to check the [http://moodle.org/plugins Moodle Plugins directory] to see if a {{Version}} version is available for any [[Installing plugins#Plugins overview|plugins (including themes) installed on your site]]. If so, download the plugin package to prepare to copy it to the appropriate location in your Moodle code (see [[Installing plugins]]).


The upgrade of the plugin will then happen as part of the Moodle upgrade process.
The plugin upgrade will then be part of the Moodle upgrade process.
 
If an outdated plugin causes your upgrade to fail, you can usually delete the plugin code instead of uninstalling it from within Moodle so that the data associated with it remains intact.


If an out-of-date plugin causes your upgrade to fail, you can usually delete the plugin code rather than uninstalling it from within Moodle so that the data associated with it is not deleted.
==Put your site into maintenance mode==
==Put your site into maintenance mode==
Before you begin upgrading your site, you should put it into [[Maintenance_mode | maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.
Before you begin upgrading your site, you should put it into [[maintenance mode]] to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.
 
==Code directories restructure==
 
The directory structure of Moodle files and the security model changed from 5.1.
 
If you are upgrading to 5.2 from version 5.0 or older, '''you will need to update your web server configuration'''. Please check the [./https://docs.moodle.org/501/en/Upgrading#Code_directories_restructure 5.1 code directories restructure documentation] for full details.
 
If you are upgrading from 5.1 to 5.2, you have already completed the above-mentioned web server configuration updates, so no further directory restructure actions are required to upgrade to 5.2.
 
== Routing ==
A ''Router'' has been included with Moodle since Moodle 4.5 and its use has increased in this release.
 
=== Apache ===
 
If you have access to the Apache configuration you can use the <code>FallbackResource</code> directive as follows:
<syntaxhighlight lang="apacheconf">
<Directory "/path/to/your/site">
    FallbackResource /r.php
</Directory>
</syntaxhighlight>
 
If you do not have access to the Apache configuration, but your configuration allows setting the <code>FallbackResource</code> in an Override file, then you can create a <code>.htaccess</code> file in your Moodle <code>public</code> folder with the following content:
<syntaxhighlight lang="apacheconf">
FallbackResource /r.php
</syntaxhighlight>
 
If your host prevents the use of the <code>FallbackResource</code> directive, you may still be able to use <code>mod_rewrite</code>. See the documentation below for OpenLiteSpeed.
 
For more information on the <code>FallbackResource</code> directive see the [https://httpd.apache.org/docs/2.4/mod/mod_dir.html#fallbackresource Apache Documentation].
 
=== nginx ===
The nginx server does not support per-directory configuration. All configuration must be specified in the central configuration.
 
The configuration you require will depend on your overall nginx configuration and how php-fpm is integrated.
 
<syntaxhighlight lang="nginx">
try_files $uri $uri/ /r.php$is_args$args;
</syntaxhighlight>
 
=== OpenLiteSpeed (cPanel) ===
This configuration is also compatible with Apache.
 
The following should be placed into the <code>.htaccess</code> file of your Moodle <code>/public</code> directory.
 
<syntaxhighlight lang="apacheconf">
RewriteEngine On
 
# If we have a request which:
# - is not a file;
# - but is a directory;
# - and the directory contains an index.php;
# then redirect to the index.php in that directory.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ $1/index.php [L]
 
# Rewrite / to /index.php
RewriteRule ^$ ./index.php [L]
 
# Anything else should be redirected to the Moodle Router.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ r.php [L,QSA]
</syntaxhighlight>
 
== Install the new Moodle software ==
== Install the new Moodle software ==
You can download the latest release from [https://download.moodle.org/ Moodle downloads].
You can download the latest release from [https://download.moodle.org/ Moodle downloads].
=== Standard install package ===
=== Standard install package ===
# Move your old Moodle software program files to another location. ''Do NOT copy new files over the old files.''
# Move your old Moodle software program files to another location. ''Do NOT copy new files over the old files.''
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.
# Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory.  
# Copy your old [[Configuration file|config.php file]] back to the new Moodle directory (not the public subdirectory).
# As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)
As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)
# Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.
 
Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the [[Migration]] documents.
====Linux====
====Linux====
  mv moodle moodle.backup
  mv moodle moodle.backup
Line 42: Line 120:
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one ('''check that custom plugins are the correct version for your new Moodle first'''):
Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one ('''check that custom plugins are the correct version for your new Moodle first'''):
  cp moodle.backup/config.php moodle
  cp moodle.backup/config.php moodle
  cp -pr moodle.backup/theme/mytheme moodle/theme/mytheme
  cp -pr moodle.backup/theme/mytheme moodle/public/theme/mytheme
  cp -pr moodle.backup/mod/mymod moodle/mod/mymod
  cp -pr moodle.backup/mod/mymod moodle/public/mod/mymod
Don't forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a 'production' server open to the public internet.  
Don't forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a 'production' server open to the public internet.  
  chown -R root:root moodle (Linux debian - or even create a user especially for moodle. '''Don't''' use the web server user, e.g. www-data)
  chown -R root:root moodle (Linux debian - or even create a user especially for moodle. '''Don't''' use the web server user, e.g. www-data)
Line 53: Line 131:
=== Using Git ===
=== Using Git ===
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.
You can use Git for updating or upgrading your Moodle. See [[Git for Administrators]] for details.
'''Important'''
Any third party plugins that you have installed will still be located in their original locations above the new /public folder. These will need to be relocated into their relative path within the new /public folder structure to have them continue to work.
===Command line upgrade===
===Command line upgrade===
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.
On Linux servers, Moodle {{Version}} supports running the [[CLI|upgrade from the command line]], rather than through a web browser. This is likely to be more reliable, particularly for large sites.
== Finishing the upgrade ==
== Finishing the upgrade ==
The last step is to trigger the upgrade processes within Moodle.  
The last step is to trigger the upgrade processes within Moodle.  
Line 66: Line 150:
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!
Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!


Note: If you are running multiple servers then you should purge all caches manually (via ''Site administration > Development > Purge all caches'') after completing the upgrade on all servers.
Note: If you are running multiple servers or find some functionality missing (such as the ''filepicker'' not loading) then you should purge all caches manually (via ''Site administration > Development > Purge all caches'') after completing the upgrade.
===Fatal error: Maximum execution time of 30 seconds exceeded...===
===Fatal error: Maximum execution time of 30 seconds exceeded...===
If your server uses a main language other than English, you may encounter a 'Fatal error: Maximum execution time of 30 seconds exceeded' when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.
If your server uses a main language other than English, you may encounter a 'Fatal error: Maximum execution time of 30 seconds exceeded' when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.
==After upgrading==
{{Note|If BigBlueButtonBN was previously installed, because the recordings are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed.


This means that in large deployments (with many recordings), the process may take some time (it can be hours) and therefore recordings may not be displayed immediately. But they are still there.}}
==Possible issues that may affect you in Moodle {{Version}}==
==Possible issues that may affect you in Moodle {{Version}}==


=== General ===


See the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%204.1%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].
See also the list of [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%205.2%20AND%20labels%20%3D%20upgrade_notes upgrade_notes-labelled issues] and [https://tracker.moodle.org/issues/?jql=project%20%3D%20MDL%20AND%20resolution%20%3D%20Fixed%20AND%20fixVersion%20%3D%205.2%20AND%20labels%20%3D%20ui_change ui_change-labelled issues].


=== XMLRPC ===
=== Upgrade Debugging Messages ===
* The installation of the '''XMLRPC PHP extension''' is not needed for Moodle 4.1 core anymore. All [[MNet]] features continue working exactly the same, but using a PHP library instead (see MDL-76055 for details).
You may encounter "Deleting question which is no longer linked to a context..." debugging messages during upgrade. This requires no action. We are addressing this known debugging issue under MDL-88393.
* If you were using the '''webservice_xmlrpc''' plugin for integrations with other systems, be warned that it has been removed from core for Moodle 4.1 (see MDL-76052 for details). It's now available @ https://github.com/moodlehq/moodle-webservice_xmlrpc and has been also published in the [https://moodle.org/plugins/webservice_xmlrpc Plugins directory]. Note that, if you want to continue using this plugin, then you will need, '''before starting the upgrade process''', to:
*# Install the '''XMLRPC PHP extension''', the webservice requires it.
*# Install the '''webservice_xmlrpc plugin''', from the links in the previous paragraph, into the <tt>webservice/xmlrpc</tt> directory.
*# Then, and only then, start the upgrade process.


=== New plugins in Moodle {{Version}} ===
=== Activities block removal ===
====BigBlueButton====
The Activities block has been removed. Any course or dashboard page using it will lose the block after upgrade. Check for usage before upgrading and communicate to affected sites in advance.
{{Note|For recordings to work properly, [https://docs.moodle.org/502/en/Cron Cron] Jobs must be enabled.  Also, if you are using [https://github.com/blindsidenetworks/scalelite ScaleLite] for load balancing your BigBlueButton servers, make sure you are running the latest release of ScaleLite.}}
BigBlueButtonBN has been [https://moodle.org/plugins/mod_bigbluebuttonbn contributed plugin] for more than 10 years. It enables Moodle to interoperate with a BigBlueButton server and it is part of Moodle 4.0 as a core plugin. For more details see [https://docs.moodle.org/502/en/BigBlueButton BigBlueButton in Moodle 4.0]
When upgrading to Moodle 4.0, there are two possible scenarios.
===== BigBlueButtonBN was not installed =====
If the plugin was never installed, there are only two considerations to make.
* BigBlueButton is disabled by default. Administrators must enable it from Site administration > Plugins > Manage activities and then check the box to accept the data processing agreement.
* BigBlueButton is an external service. The plugin comes pre-configured with a Free Tier Hosting that comes with some restrictions.
===== BigBlueButtonBN was already installed =====
If the plugin was already installed, and the steps were followed correctly, the upgrade should be completed normally. But there are also some considerations to make.
* BigBlueButton may be disabled by default. If this is the case Administrators must enable it from Site administration > Plugins > Manage activities and then check the box to accept the data processing agreement.
* BigBlueButton is an external service. The plugin will only change the BigBlueButton credentials if the former Free Tier Hosting `https://test-install.blindsidenetworks.com/bigbluebutton/` was used. If it was not, then the existing service will still be the same.
===== General consideration =====
Regardless of the scenario, there is one general consideration


BigBlueButton is still the repository for recordings, but the metadata is now stored in Moodle, so instead of making a getRecording requests each time a BigBlueButton activity is displayed, the view is entirely populated with Moodle data. While this makes the code more efficient, it also means that every recording needs to be processed as part of the upgrade.
=== Subsections removals ===
# For recordings to work properly, cron jobs must be enabled
The description field on subsections is removed. A migration task converts existing descriptions to Text and media activities. Runs automatically on upgrade or manually via ad-hoc tasks.
# Since the recording are processed asynchronously in the background, the data migration starts after the Moodle upgrade has been completed. This means that in in large deployments (with many recordings), the recordings may take some time (it can be hours) to be processed and therefore to be displayed as part of the activities.
Only Name and Restrict access settings remain. No action needed unless workflows link directly to subsection settings pages.


=== MoodleNet deprecation ===
MoodleNet integration is deprecated in 5.2 and will be removed in a future release. If a client actively uses MoodleNet sharing or profile links, begin planning for transition.


The details of the process can be checked in the cron job logs.
=== MimeTex removal ===
The MimeTeX library has been removed. If a client site uses the TeX filter with MimeTeX for mathematical formula rendering, switch to MathJax - the recommended replacement, already supported in Moodle.


And remember that if the Plugin was not uninstalled, and the pre-existing rooms are there, the recordings are still referenced. Nothing is lost even if they are not shown immediately. They only need to be migrated.
=== Marketplace integration ===
Moodle 5.2 introduces the initial groundwork for a Marketplace integration. No action required - signals upcoming changes to how plugins and integrations are discovered in future releases.


Additionally, when using Scalelite as the Load Balancer for BigBlueButton, make sure the [https://github.com/blindsidenetworks/scalelite/releases/tag/v1.3.4 latest version] is deployed. With any other Load Balancer, make sure the BigBlueButton service updateRecordings is correctly implemented. Otherwise the migration will not be completed.
===Custom user tours===
If you have created any custom user tours where the URLs do not end in a % symbol (for example '/course/view.php'), these will no longer appear when viewing a page which has extra text at the end of the URL, such as /course/view.php?id=123. To make these tours work again, add a % to the end of the URL ('/course/view.php%'). The % symbol was always supposed to be necessary, but due to a bug in earlier versions, was previously not required.
===New capabilities in Moodle {{Version}}===
===New capabilities in Moodle {{Version}}===
* mod/bigbluebuttonbn:addinstance
* mod/bigbluebuttonbn:addinstancewithmeeting
* mod/bigbluebuttonbn:addinstancewithrecording
* mod/bigbluebuttonbn:deleterecordings 
* mod/bigbluebuttonbn:importrecordings 
* mod/bigbluebuttonbn:join 
* mod/bigbluebuttonbn:managerecordings 
* mod/bigbluebuttonbn:protectrecordings 
* mod/bigbluebuttonbn:publishrecordings 
* mod/bigbluebuttonbn:unprotectrecordings   
* mod/bigbluebuttonbn:unpublishrecordings   
* mod/bigbluebuttonbn:view 
* mod/quiz:emailnotifyattemptgraded
* moodle/question:commentall
* moodle/question:commentmine


* moodle/reportbuilder:edit
* mod/quiz:customisequestionnumbers
* moodle/reportbuilder:editall
* moodle/reportbuilder:scheduleviewas
* moodle/reportbuilder:view


* qbank/customfields:changelockedcustomfields
== Moodle 4.3, 4.4, 4.5, 5.0 and 5.1 upgrading notes ==
* qbank/customfields:configurecustomfields 
Depending on which version you are upgrading from, please see the section 'Possible issues that may affect you' in the documentation:
* qbank/customfields:viewhiddencustomfields
* [https://docs.moodle.org/403/en/Upgrading Upgrading to Moodle 4.3]
=== Moodle 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11 improvements ===
* [https://docs.moodle.org/404/en/Upgrading Upgrading to Moodle 4.4]
Depending on which version you are upgrading from, please see the section 'Possible issues that may affect you' in the documentation
* [https://docs.moodle.org/405/en/Upgrading Upgrading to Moodle 4.5]
* [https://docs.moodle.org/36/en/Upgrading Upgrading to Moodle 3.6]
* [https://docs.moodle.org/500/en/Upgrading Upgrading to Moodle 5.0]
* [https://docs.moodle.org/37/en/Upgrading Upgrading to Moodle 3.7]
* [https://docs.moodle.org/500/en/Upgrading Upgrading to Moodle 5.1]
* [https://docs.moodle.org/38/en/Upgrading Upgrading to Moodle 3.8]
* [https://docs.moodle.org/39/en/Upgrading Upgrading to Moodle 3.9]
* [https://docs.moodle.org/310/en/Upgrading Upgrading to Moodle 3.10]
* [https://docs.moodle.org/311/en/Upgrading Upgrading to Moodle 3.11]


==Any questions about the process?==
==Any questions about the process?==
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.
Please post in the [https://moodle.org/mod/forum/view.php?id=28 Installing and upgrading help forum] on moodle.org.
==See also==
 
* [[dev:Moodle {{Version}} release notes|Moodle {{Version}} release notes]]
* Here’s a video from Rick, a Moodle.org “Helpful Moodler,” demonstrating how he upgraded Moodle 5.0 to Moodle 5.1 on his VPS. It’s captioned in several languages.<br> [https://www.edu-gen.com/profession/presentations/Moodle_51/Moodle51.html Upgrading Moodle 5.0 to Moodle 5.1 on a VPS]
* [https://moodle.org/mod/forum/discuss.php?d=393570 Problem accessing dropdown such as personal profile since 3.8 (20191118) update] forum discussion
* Rick demonstrates upgrading three of his Moodle sites in under 10 minutes using the method described in the above video, "Upgrading from Moodle 5.0 to Moodle 5.1 on my VPS video. <br>[https://vimeo.com/1142103782/82b30de5b1 Update 3 Moodle Sites in Under 10 Minutes]
[[es:Actualización de moodle]]
[[es:Actualización de moodle]]
[[fr:Mise à jour]]
[[fr:Mise à jour]]
[[ja:Moodleをアップグレードする]]
[[ja:Moodleをアップグレードする]]
[[de:Aktualisierung von Moodle]]
[[de:Aktualisierung von Moodle]]

Latest revision as of 10:07, 21 April 2026

This page explains in detail how to upgrade Moodle. For a summary of the process, see Upgrade overview.

Warning:

The directory structure of Moodle files and the security model have changed in 5.1.

1. A new "public" folder has been introduced to contain all web accessible files. Configuration and other sensitive files are now stored outside this folder for better security.

2. You will need to reconfigure your web server to accommodate the security change as part of the upgrade process. See the section below Code directories restructure.


Check the requirements

Before upgrading, check that your server meets all requirements for 5.2 in Site administration > Server > Environment.

See the Moodle 5.2 release notes for server and client software requirements.

Note: You can only upgrade to Moodle 5.2 from Moodle 4.4 or later. If upgrading from earlier versions, you must upgrade to 4.4 or later as an intermediate step.

Before upgrading

We advise that you test the upgrade first on a COPY of your production site, to make sure it works as you expect. See Moodle_migration.

Consider setting the upgrade key for your site. The feature has been available for a while. It is now encouraged for better security.

Backup important data

There are three areas that should be backed up before any upgrade:

  1. Moodle software (For example, everything in server/www/moodle)
  2. Moodle uploaded files (For example, server/moodledata)
  3. Moodle database (For example, your Postgres or MySQL database dump)

See Site backup for more specific information.

Check for plugin updates

If you have Automatic updates deployment enabled, you can update installed plugins automatically during the upgrade. Just make sure you check for available updates (via the button for it) at the Site Administration > Plugins overview tool.

If you are updating plugins manually, now is a good time to check the Moodle Plugins directory to see if a 5.2 version is available for any plugins (including themes) installed on your site. If so, download the plugin package to prepare to copy it to the appropriate location in your Moodle code (see Installing plugins).

The plugin upgrade will then be part of the Moodle upgrade process.

If an outdated plugin causes your upgrade to fail, you can usually delete the plugin code instead of uninstalling it from within Moodle so that the data associated with it remains intact.

Put your site into maintenance mode

Before you begin upgrading your site, you should put it into maintenance mode to stop any non-admin users from logging in. Then you should wait for any currently running cron processes to complete before proceeding.

Code directories restructure

The directory structure of Moodle files and the security model changed from 5.1.

If you are upgrading to 5.2 from version 5.0 or older, you will need to update your web server configuration. Please check the [./https://docs.moodle.org/501/en/Upgrading#Code_directories_restructure 5.1 code directories restructure documentation] for full details.

If you are upgrading from 5.1 to 5.2, you have already completed the above-mentioned web server configuration updates, so no further directory restructure actions are required to upgrade to 5.2.

Routing

A Router has been included with Moodle since Moodle 4.5 and its use has increased in this release.

Apache

If you have access to the Apache configuration you can use the FallbackResource directive as follows:

<Directory "/path/to/your/site">
    FallbackResource /r.php
</Directory>

If you do not have access to the Apache configuration, but your configuration allows setting the FallbackResource in an Override file, then you can create a .htaccess file in your Moodle public folder with the following content:

FallbackResource /r.php

If your host prevents the use of the FallbackResource directive, you may still be able to use mod_rewrite. See the documentation below for OpenLiteSpeed.

For more information on the FallbackResource directive see the Apache Documentation.

nginx

The nginx server does not support per-directory configuration. All configuration must be specified in the central configuration.

The configuration you require will depend on your overall nginx configuration and how php-fpm is integrated.

try_files $uri $uri/ /r.php$is_args$args;

OpenLiteSpeed (cPanel)

This configuration is also compatible with Apache.

The following should be placed into the .htaccess file of your Moodle /public directory.

RewriteEngine On

# If we have a request which:
# - is not a file;
# - but is a directory;
# - and the directory contains an index.php;
# then redirect to the index.php in that directory.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ $1/index.php [L]

# Rewrite / to /index.php
RewriteRule ^$ ./index.php [L]

# Anything else should be redirected to the Moodle Router.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ r.php [L,QSA]

Install the new Moodle software

You can download the latest release from Moodle downloads.

Standard install package

  1. Move your old Moodle software program files to another location. Do NOT copy new files over the old files.
  2. Unzip or unpack the upgrade file so that all the new Moodle software program files are in the location the old files used to be in on the server. Moodle will adjust SQL and moodledata if it needs to in the upgrade.
  3. Copy your old config.php file back to the new Moodle directory (not the public subdirectory).

As mentioned above, if you had installed any plugins on your site you should add them to the new code tree (Moodle directory structure) now. It is important to check that you get the correct version for your new version of Moodle. Be particularly careful that you do not overwrite any code in the new version of Moodle and that you place the plugin folders in the correct directory (the same directory that they are in in the current installation.)

Your moodledata folder should be located separately to your Moodle code folder and, as such, should not need anything done to it. Moodle 3.0 will throw a warning if it is located in a web accessible folder and the moodledata should never be located in the Moodle code folder. If you are moving your installation to a new server or new location on your server, then you will need to follow the Migration documents.

Linux

mv moodle moodle.backup
tar xvzf moodle-latest-5.2.tgz

Next, copy across your config.php, any custom plugins, and your .htaccess file if you created one (check that custom plugins are the correct version for your new Moodle first):

cp moodle.backup/config.php moodle
cp -pr moodle.backup/theme/mytheme moodle/public/theme/mytheme
cp -pr moodle.backup/mod/mymod moodle/public/mod/mymod

Don't forget to make moodle/config.php (and the rest of the source code) readable by your www server. For maximum security the files should not be writeable by your server. This is especially important on a 'production' server open to the public internet.

chown -R root:root moodle (Linux debian - or even create a user especially for moodle. Don't use the web server user, e.g. www-data)
chmod -R 755 moodle

If you use cron, take care that cron.php is executeable and uses the correct php command:

chmod 740 admin/cli/cron.php (some configurations need chmod 750 or chmod 755)
copy the first line from cron.php (if it looks like '#!/usr/local/bin/php' or '#!/usr/local/bin/php5.3', no need to copy '<?php') 

if necessary. However, for a simple upgrade, there should be no need to change anything with cron.

Using Git

You can use Git for updating or upgrading your Moodle. See Git for Administrators for details.

Important

Any third party plugins that you have installed will still be located in their original locations above the new /public folder. These will need to be relocated into their relative path within the new /public folder structure to have them continue to work.

Command line upgrade

On Linux servers, Moodle 5.2 supports running the upgrade from the command line, rather than through a web browser. This is likely to be more reliable, particularly for large sites.

Finishing the upgrade

The last step is to trigger the upgrade processes within Moodle.

If you put your site into Maintenance mode earlier; take it out now!

To do this just go to Site administration > Notifications.

Moodle will automatically detect the new version and perform all the SQL database or file system upgrades that are necessary. If there is anything it can't do itself (very rare) then you will see messages telling you what you need to do.

Assuming all goes well (no error messages) then you can start using your new version of Moodle and enjoy the new features!

Note: If you are running multiple servers or find some functionality missing (such as the filepicker not loading) then you should purge all caches manually (via Site administration > Development > Purge all caches) after completing the upgrade.

Fatal error: Maximum execution time of 30 seconds exceeded...

If your server uses a main language other than English, you may encounter a 'Fatal error: Maximum execution time of 30 seconds exceeded' when you try to upgrade it. You can increase max_execution_time = 160 on php.ini to allow the scripts enough time to process the language update. Otherwise, you can switch to English as the default language before doing the upgrade and back to your original language after a successful upgrade. See the forum discussion at https://moodle.org/mod/forum/discuss.php?d=119598.

Possible issues that may affect you in Moodle 5.2

See also the list of upgrade_notes-labelled issues and ui_change-labelled issues.

Upgrade Debugging Messages

You may encounter "Deleting question which is no longer linked to a context..." debugging messages during upgrade. This requires no action. We are addressing this known debugging issue under MDL-88393.

Activities block removal

The Activities block has been removed. Any course or dashboard page using it will lose the block after upgrade. Check for usage before upgrading and communicate to affected sites in advance.

Subsections removals

The description field on subsections is removed. A migration task converts existing descriptions to Text and media activities. Runs automatically on upgrade or manually via ad-hoc tasks. Only Name and Restrict access settings remain. No action needed unless workflows link directly to subsection settings pages.

MoodleNet deprecation

MoodleNet integration is deprecated in 5.2 and will be removed in a future release. If a client actively uses MoodleNet sharing or profile links, begin planning for transition.

MimeTex removal

The MimeTeX library has been removed. If a client site uses the TeX filter with MimeTeX for mathematical formula rendering, switch to MathJax - the recommended replacement, already supported in Moodle.

Marketplace integration

Moodle 5.2 introduces the initial groundwork for a Marketplace integration. No action required - signals upcoming changes to how plugins and integrations are discovered in future releases.

New capabilities in Moodle 5.2

  • mod/quiz:customisequestionnumbers

Moodle 4.3, 4.4, 4.5, 5.0 and 5.1 upgrading notes

Depending on which version you are upgrading from, please see the section 'Possible issues that may affect you' in the documentation:

Any questions about the process?

Please post in the Installing and upgrading help forum on moodle.org.

  • Here’s a video from Rick, a Moodle.org “Helpful Moodler,” demonstrating how he upgraded Moodle 5.0 to Moodle 5.1 on his VPS. It’s captioned in several languages.
    Upgrading Moodle 5.0 to Moodle 5.1 on a VPS
  • Rick demonstrates upgrading three of his Moodle sites in under 10 minutes using the method described in the above video, "Upgrading from Moodle 5.0 to Moodle 5.1 on my VPS video.
    Update 3 Moodle Sites in Under 10 Minutes