Hello I’m getting fairly convinced symphony is the right choice for my 9-month project (a festival website with a lot of connections [ie. ‘joins’] between the data). One of the reasons is also the helpful forums, and the active community.

I would need to quickly make the datamodel and a skeleton/raw output, so that the client can start entering data early in the project, all while I work on the templates. But what happens if I change the datamodel on my development machine (most likely adding some fields here and there). How do I deploy updates in this case? Do I have to deal with the database, or is there an abstracted way to do this?

I saw capistrano mentioned, but I never used it myself. Is that the solution? Even though I’d prefer to know what I’m doing in detail, even though it takes longer.

Do I have to become an expert in symphonys abstracted data model to do this (maybe not a bad idea in any case)?

thanks, J

I found this:

When maintaining development, staging and production versions of database I’ve found it really difficult to migrate changes. If I modify a section (adding a field) on dev, I’d have to repeat the same on staging and production. If I add multiple fields, I need to make sure I do these in the same order, so that internal section and field IDs remain consistent between builds.between builds.

from here:

I can live with having to add fields in the same order on production/development/staging, but it doesn’t sound very stable?


Take a look at this very useful extension:

Nice! and thanks


Is there a solution for the opposite, i.e. staging content changes in different databases?

I did consider trying but it’s almost entirely impossible. Sure you can track the INSERT statements made when an Entry is created, but when you start having related entries then you need to track the internal IDs between them. Since internal IDs of entries aren’t consistent between builds, you get problems.

You could provide an XML export of content from one database and import to the other using XML Importer.

I’ve been doing a lot of thinking about this sort of thing, as I’m about to do my first ‘professional’ build (instead of ‘messing about’), and I think I’ve come up with my development workflow for additional development. If anyone sees any humdingers, please tell me!


  1. A Live server with the working Symphony site, plus Live Database.
  2. Staging server with the working Symphony site, plus Staging Database.
  3. Development server, plus Development Database.


  1. Pull Live Database and server to Staging and Development.
  2. Develop new structure, using the extension from Nick.
  3. Pull entire Live Database back to Staging.
  4. Push changes from Dev and populate with test content.
  5. UAT changes.
  6. Make alterations in Dev and repeat 2-6 until happy.
  7. Prepare final content for new structure.
  8. Freeze content addition on Live.
  9. Repeat 2-4, but use final content.
  10. Final check.
  11. Go Live.

It may sound a little obvious to some, but I had to write it down. It may seem like a long way round, especially for smaller sites and projects.

I was also thinking about freezing content addition using a JQuery extension that disables all ‘Add New’ buttons on the site while changes are being made, but then it occurred to me that the site would have to be down while the Database was upgraded anyway.

Does the Maintenance Mode extension allow any Database calls while active, or is it all just PHP/XSLT?

Does the Maintenance Mode extension allow any Database calls while active, or is it all just PHP/XSLT?

Maintenance mode just provides an internal page redirect for non-logged in users. For authorised users, they still have free reign over the system—as they should be since the maintenance mode extension was created out of the need for a website to temporarily switch to a splash page while developers tinkered with the backend.

Almost there, I made an amazing admin in absolute no-time for the client (sections modelling is truly great). They are happily entering live data in the live/production environment. BUT i can’t get nicks database synchronizer to work (described here)

So I’m stuck with a mix of working on the live environment for field/section updates and locally for templates, then doing synchronizing both ways = asking for trouble in the long run.

Anyone got this dbsync to work in 2.1.2? Any ideas?

thanks, J

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details