Dear Internet Explorer user: Your browser is no longer supported

Please switch to a modern browser such as Microsoft Edge, Mozilla Firefox or Google Chrome to view this website's content.

I recently needed to make a small upgrade to my installation of SilverStripe from version 3.1.2 to version 3.1.5. Unlike other popular content management systems (CMS) such as WordPress, Joomla or Drupal, the documentation for SilverStripe can be deficient. For those lacking experience with this particular CMS, this poses risks.

Identify system folders in your webroot (cms, framework, sapphire and any additional modules).

There hasn’t been a /sapphire/ folder since the release of SilverStripe 3.0! Hence I have prepared this quick how-to based on my experience of upgrading from 3.1.2 (the original installation) to 3.1.5.

## Step 1: Confirm your version

To determine the version of SilverStripe that you’re using, log into the CMS.

The current version of SilverStripe CMS and framework will be displayed when the mouse is hovered over the SilverStripe logo in the admin panel.

Hover the mouse over the SilverStripe logo to determine the current version.

Check the SilverStripe website for the latest stable release to determine whether your SilverStripe site needs upgrading. (There is no automated upgrade system, such as there is for WordPress).

## Step 2: Backup your files

Copy all of the files on your web root to another location, in case it all goes horribly wrong.

## Step 3: Backup your database

Backup your SQL database for the same reason. (The procedure I used was the same as described for WordPress, using phpMyAdmin on cPanel).

## Step 4: Copy files to the server

The SilverStripe upgrade installation requires the replacement of files within the following folders:

• /cms/
• /framework/

plus the following files in the root:

• CONTRIBUTING.md
• index.php
• info.php
• install-frameworkmissing.html
• Makefile
• web.config

To do this, I renamed the folders to cms.old and framework.old and moved them off the root, in case I needed to roll everything back. Do not leave these folders in the root, or duplicate files will cause errors later in the installation process.

Do not overwrite, replace or move any other folders.

Using FTP, copy the local version of /cms/ and /framework/ across to the server.

Do the same for the files in the root, but do not replace:

• .htaccess
• php.ini

## Step 5: Check Constants.php

If, like me, you had problems with false magic_quotes warnings during the initial installation of SilverStripe, you may have made changes to Constants.php as per these instructions (go to Step 6). The Constants.php file (located at /framework/core/) will have been overwritten in the upgrade.

Repeat the changes to Constants.php as described in Step 6 of my post “Installing SilverStripe CMS“. Upload the edited Constants.php file to /framework/core/.

## Step 6: Rebuild the database

To flush the database, go to http://yourwebsite.com/dev/build/?flush=1

The first time I did this, I got the following error: “Class ‘MySQLQuery’ not found in /home/silverstripe/framework/model/MySQLDatabase.php on line 152”

At this stage, I rolled back my installation to 3.1.2 until I read of this similar experience and realised that I simply needed to refresh that page. I returned the files back to 3.1.5 and then went back to /dev/build/?flush=1. The database was then rebuilt successfully.

## Step 7: Check site functionality

Make sure that the site is working as it should at both the back-end and front-end. (As a final step, I had to remedy an annoying magic_quotes problem).

Once the site is confirmed as working at both the front and back ends, the task is complete.

2 responses to “Upgrading Silverstripe 3.1.x”

On 6 July 2014, Cam Findlay wrote:

Note, the flush=1 rebuilds the class manifest so your application knows which classes are available :)

I’d also highly suggest looking into managing upgrades via the PHP dependancy management tool “Composer”.

On 25 January 2015, nicolaas wrote:

We specialised in upgrading silverstripe websites – if you need help.

<a href="" title=""> <b> <blockquote cite=""> <code> <em> <i> <q cite=""> <strike> <strong>