OJS is an open source software program and like all similar programs, regular OJS upgrades are essential for improved security, performance, compatibility, and functionality. Security is arguably the most important reason why you should always keep your OJS up-to-date. When you do not update your OJS site, you are risking your OJS security and missing out on new features / improvements.
Upgrading OJS is not an easy task and requires extensive technical expertise in order to make sure it’s done correctly. As well, a botched or incomplete OJS upgrade procedure can result in OJS malfunction and loss of your data. Before upgrading your installation, perform a complete backup of your data files and database. If the upgrade process fails, you will need to recover from backup before continuing. If you are using PHP Safe Mode, please ensure that the max_execution_time directive in your php.ini configuration file is set to a high limit. If this or any other time limit (e.g. Apache’s “Timeout” directive) is reached and the upgrade process is interrupted, manual intervention will be required. If you need assistance with upgrading your OJS, please visit our OJS Upgrade Services or contact us for more information.
Upgrading From OJS 2.0.x, 2.1.x, 2.2.x, or 2.3.x
In order to upgrade from these older branches of OJS, you will first need to upgrade to an intermediate version of OJS 2.4.x. Download the latest copy of OJS 2.4.x and follow the upgrade instructions included there, then read the docs/UPGRADE document included in this package to continue the upgrade from there.
Upgrading From OJS 2.4.x
OJS 3.x is a major rewrite of Open Journal Systems, introducing numerous new concepts and different approaches. The upgrade process from 2.x to 3.x does its best to adapt old content to the new structures, but we strongly recommend performing a test upgrade and exploring the new system before committing your content to the upgrade. Downgrades from 3.x to 2.x will not be supported.
Upgrading to the latest version of OJS involves two steps:
- Obtaining the latest OJS code - Upgrading the OJS database
It is highly recommended that you also review the release notes (docs/RELEASE) and other documentation in the docs directory before performing an upgrade.
Obtaining The Latest OJS Code
The OJS source code is available in two forms: a complete stand-alone package, and from read-only github access.
- Full Package:
It is also possible to upgrade by downloading the complete package for the latest release of OJS:
- Download and decompress the latest package from our OJS Download Center - Make a copy of the config.inc.php provided in the new package - Move or copy the following files and directories from your current OJS installation: - config.inc.php - public/ - Your uploaded files directory ("files_dir" in config.inc.php), if it resides within your OJS directory - Replace the current OJS directory with the new OJS directory, moving the old one to a safe location as a backup - Be sure to review the Configuration Changes section of the release notes in docs/release-notes/README-(version) for all versions between your original version and the new version. You may need to manually add new items to your config.inc.php file.
If your instance of OJS was checked out from github (see docs/README-GIT), you can update the OJS code using a git client. To update the OJS code from a git check-out, run the following command from your OJS directory:
$ git rebase --onto <new-release-tag> <previous-release-tag>
This assumes that you have made local changes and committed them on top of the old release tag. The command will take your custom changes and apply them on top of the new release. This may cause merge conflicts which have to be resolved in the usual way, e.g. using a merge tool like kdiff3.
“TAG” should be replaced with the git tag corresponding to the new release. OJS release version tags are of the form “ojs-MAJOR_MINOR_REVSION-BUILD”. For example, the tag for the initial release of OJS 3.0.0 is “ojs-3_0_0-0”.
Consult the README of the latest OJS package or the OJS web site for the tag corresponding to the latest available OJS release.
Note that attempting to update to an unreleased version (e.g., using the HEAD tag to obtain the bleeding-edge OJS code) is not recommended for anyone other than OJS or third-party developers; using experimental code on a production deployment is strongly discouraged and will not be supported in any way by the OJS team.
Upgrading OJS Database
After obtaining the latest OJS code, an additional script must be run to complete the upgrade process by upgrading the OJS database and potentially executing additional upgrade code. This script can be executed from the command-line or via the OJS web interface.
If you have the CLI version of PHP installed (e.g., /usr/bin/php), you can upgrade the database as follows:
- Edit config.inc.php and change "installed = On" to "installed = Off" - Run the following command from the OJS directory (not including the $): $ php tools/upgrade.php upgrade - Re-edit config.inc.php and change "installed = Off" back to "installed = On"
If you do not have the PHP CLI installed, you can also upgrade by running a web-based script. To do so:
- Edit config.inc.php and change "installed = On" to "installed = Off" - Open a web browser to your OJS site; you should be redirected to the installation and upgrade page - Select the "Upgrade" link and follow the on-screen instructions - Re-edit config.inc.php and change "installed = Off" back to "installed = On"