SilverStripe 2.4 beta release brings hierarchical URLs, SQL Server support, and much more

Posted by Sigurd Magnusson on 5 February 2010

Screenshot of SilverStripe 2.4We're extremely excited to announce SilverStripe v2.4 is now at beta release stage!

This means it's ready for testing by our community. We've made a number of changes since the 2.4 alpha release in November, and we're continuing to polish the intended features in preparation for the stable version. We do not recommend using this version of SilverStripe for production sites yet unless extensive testing is done.

Regular readers of our blog may want to read the changelog for a full list of recent changes, the highlights of which are detailed below.

The SilverStripe 2.4 release is all about using SilverStripe in bigger and more complex production environments and it brings a wealth of great features.

Hierarchical URLs

If your website contains hundreds or thousands of pages, you may find the default way SilverStripe handles friendly URLs a little limiting. For instance:

With hierarchical URLs, the address for such a page might be:

One of the principles of this feature is that it provides a logical "bread crumb" for a page. Each segment in the URL (as separated by a slash symbol) is a page in itself that can be visited. Hierarchical URLs also reduce the problem of "running out" of URLs, where you might be forced to have URLs like SilverStripe will allow you to run the website in either simple or hierarchical URL mode, so that for simple websites you can retain short, memorable website addresses.

Huge thanks go to Andrew Short, a member of our developer community based in Australia, who is responsible for writing most of this feature.

Microsoft SQL Server Database support

There is strong demand for SilverStripe to run on the Microsoft platform—in recent months there have been more than 36,000 downloads via the web application gallery alone. We have therefore worked hard to allow SilverStripe to natively run on a SQL Server 2008 database, eliminating the requirement to run SilverStripe on MySQL (though, of course, it still runs great on MySQL). We're really happy with the results, and we have government websites like already running on this platform.

Running SilverStripe on SQL Server requires the installation of the SilverStripe SQL Server module.

PostgreSQL database support

SilverStripe 2.4 can also run on a PostgreSQL 8.3 or later database. Our testing of this is not as extensive as it has been for Microsoft SQL Server, so we'd love people to install this version of SilverStripe with the PostgreSQL Database Support module and let us know how it goes.

Performance and memory use optimisations

  • Memory use optimisations mean that the CMS back-end interface for the "Site Content" section easily scales to well over 10,000 pages.
  • Performance improvements around Object and ViewableData property access.
  • Improved unit test execution speed.
  • Decreased memory usage in "Files & Images" section.
  • Tested that SilverStripe is compatible with Microsoft's new WinCache PHP bytecode cache. Anecdotal tests show that WinCache provides a 50% speed improvement in generating SilverStripe webpages.
  • Ability to cache parts of templates, providing a middle ground between the speed of fully cached pages and the richness of fully dynamic database-driven pages.
  • Batch action handling handles larger tree structures, provides better visual feedback, and respects permissions on individual pages.

Introducing roles

SilverStripe has long had support for setting granular security permissions on pages. Users can be a member of one or more groups, and groups can be configured to have various system rights, and various view and edit permissions on a page-by-page basis. This provides a great deal of flexibility, but in complex organisations the task of setting up the permission structures can mean spending a lot of time creating security groups.

Managing more complex security configurations has been eased in SilverStripe 2.4 with the introduction of roles. Roles allow groupings of people to be:

  • Assigned the same system rights (e.g. access to create pages but not create users.)
  • Assigned those rights to different sections of a website (e.g. news section, product catalogue, corporate profile, etc.)

This simplifies maintenance of the rights and users for large organisations. It makes permissions less repetitive to set up. Roles may be overkill in simple situations, and therefore their use is optional.

Other security features

  • A group can be limited to only edit a certain language in the CMS.
  • Team members can get permissions to see the draft version of a page in preview mode without requiring CMS access.
  • Pages of type "Virtual Page" have improved stability in regards to their permission control, translation and publication.
  • More fine-grained permission control for translators
  • Better XSS security of the autologin token by using HTTPOnly cookies
  • More secure against brute force login attempts

Other key improvements

  • A "SiteConfig" record stores site-wide settings and default permissions and author groups for pages. Such settings can be set differently for different languages used on your website. A example setting is the theme your site uses, although this still be set at the code level.
  • The CMS now searches for broken internal links to other pages and broken file references, and highlights them in the WYSIWYG editor. A report can be used to show broken links across the website.
  • Improved API to allow custom tags to be parsed within CMS content before being presented on webpages.
  • Improved reporting API to unify the CMS sidebar reports and full-page reports on their own section. It's easier to add custom filters to reports.
  • Added dropdown to choose from existing anchor links when inserting a link from the CMS sidebar.
  • Improved broken link detection
  • Removed the jsparty/ toplevel folder, and moved all its dependencies into sapphire/thirdparty and cms/thirdparty
  • More than 350 bugfix and enhancement commits, plus over 200 minor changes

Full changelog

Want to help out?

We'd love for you to download this release, test it, and raise articulate bug reports. In particular, we are interested in:

  • Testing that upgrades from older versions of SilverStripe go smoothly.
  • Testing the new features, like hierarchical URLs, SQL Server, and PostgreSQL.
  • Manually testing that all CMS features work as intended.
  • Testing across various hosting environments, operating systems, PHP versions, and web browsers.

To raise a bug, log in at and create a new ticket. When adding a ticket, be sure to specify the version as 2.4.0 beta.

Post your comment

Note: Comments are moderated and won't show until they are approved


  • When is the expected 2.4 final release?

    Posted by Phong Dang, 5 years ago

  • When I extract this beta into /var/www and go there with my browser, it just says
    The requested URL /install.php was not found on this server.

    in fact there is no /install.php - but there is

    so I think there is some wrong redirect in index.php that assumes the file is located in DOCUMENT_ROOT - you would like to check that? Thanks!

    Posted by SIlver Surfer, 5 years ago

  • I started a new project with the beta and it works great so far!

    Can someone tell me when the stable is planned to be released?

    Posted by Johannes, 5 years ago

  • I was able to upgrade one of my sites with little fuss.

    I'm keen to see how the API for tags with in CMS content works. Any documentation around?

    Posted by Jeremy Shipman, 5 years ago

  • Does it work with the current version CMSWorkflow?


    Posted by Victor, 5 years ago

  • Hi everyone!
    Why am i getting this error when i try to install v2.4: Fatal error: Class 'SS_Database' not found?

    Any ideas?


    Posted by Jimmy, 5 years ago

  • can not be reached at the moment so I post it here: Multilingual is working in the back end, but somehow new translations get the same url as the originals. You have to change that by hand.

    Isn't there a way to do that automatically with nested urls, for instance: mysite/de_DE/mypage/ for the German translation?

    Posted by yurigoul, 5 years ago

  • Very good news! Thanks again for the very hard work! Actually thinking about upgrading 1 live site ( that went live 2 days ago) to the beta release... Yes, I know I can't, but damn... the nested URL's and speed improvement are just too good ! .....

    Wannabe partner here ! ;-)

    Posted by Lars Prakken, 5 years ago

  • Thanks for pointing out the incorrect link guys, it's now pointing correctly to the beta!

    Posted by Tim Copeland, 5 years ago

  • Thank you, please notice, the download link is the wrong one, it points to the alpha1 instead of (according to the link text) to here:

    Posted by mat, 5 years ago

RSS feed for comments on this page | RSS feed for all comments

Want to know more about the company that brought you SilverStripe? Then check out

Comments on this website? Please give feedback.