CMSB v3.69 Released (Apr 29) - Website/Code Backups

9 posts by 4 authors in: Forums > CMS Builder
Last Post: May 23   (RSS)

By Dave - April 29

Hi everyone,

We're excited to announce the release of another CMS Builder update, which includes a new section: Admin > Backup > Website Backup

This feature allows you to quickly create a zip file of your entire website and database, save it on the server, and optionally download it through your browser. You have the flexibility to choose between backing up everything or only specific code files (*.php, .js, .css, etc.), and a snapshot of the database is also included by default. Here's how this feature can benefit you:

  • Faster backups: Downloading numerous files via FTP can be time-consuming. It's not uncommon for us to initiate a website backup and then switch to other tasks while waiting for it to finish. With this new feature, creating a zip file and downloading it through your browser takes mere seconds, allowing you to create snapshots of website changes as frequently as needed.
  • Reduced backup size: We offer the option to backup only code files (*.php, .js, .css, etc.) or everything, and since the files are compressed into a zip, they consume significantly less space on your hard drive. Code file backups are particularly handy when you want to keep track of code changes over time.
  • Simplified change history: You can name your backups with descriptions like "before new revisions" or "post-launch," providing you with static backups at specific points in time. This makes it easy to compare and retrieve an old file if necessary or to investigate changes. Backup zips can be easily unzipped and compared using your preferred diff/compare app (I personally use WinMerge on Windows). Additionally, since we're taking a snapshot of the database, you'll even be able to see changes in the database data between backups.

I'll note that git and modern source control tools are great, and we use them on larger projects, but when you don't have that option, this feature provides a great alternative.

Here's the changelog.

*** April 29, 2024 - Version 3.69 (Website Backup)

SERVER REQUIREMENTS: PHP 8.0+ and MySQL 5.7+ (or MariaDB 10.2+)

- Website Backup: New feature to backup your entire website, including files and database (under: Admin > Backup)

- Database Backups: Added READ LOCK to prevent changes during backup on supporting servers
- Fixed error caused when recreating sections without a primary key column
- Fixed error caused when trying to set timezone further ahead then session expiry timeout
- Added improved error reporting and instructions when Composer dependencies are not installed
- Misc Code and other minor improvements.

You can download the latest version here:

Please feel free to ask any questions or post any feedback, questions, concerns, or bugs you find! 

Thanks, we look forward to your feedback! :)

Dave Edis - Senior Developer

Hi Dave

Are there any known issues with the Newsletter Plugin (3.07) and this latest release?

#154922 - implode(): Argument #2 ($array) must be of type ?array, string given
/home/domainhidden/public_html/cmsAdmin/lib/Fields/ListField.php on line 294



By Dave - April 30

Hi Jeff, 

Thanks for reporting that, I can confirm that issue on my end.  Can you try this fix? 

  • Open cmsb/plugins/newsletterBuilder/newsletterBuilder_cmsMenus.php
  • Search for: only set defaults for new records
  • Replace:
    $_REQUEST['send'] = 'none';​
  • With this:
    $_REQUEST['send'] = ['none'];​

Let me know if that works for you and I'll release a Newsletter Builder update as well.


Dave Edis - Senior Developer

By JeffC - May 1

Sorted. Thanks Dave


By Dave - May 2

Thanks Jeff, 

I've released an updated version here if you have any other sites that need upgrading:

Dave Edis - Senior Developer

By Dave - May 15

Hi Karlz, 

Thanks for reporting that.  Here's a patch: 

  • Open /cmsb/lib/menus/admin/backupAndRestore.php
  • Search for: disk_free_space
  • Add @ before disk_free_space like this:
  • $diskSpaceFreeBytes = @disk_free_space(dirname($GLOBALS['SETTINGS']['webRootDir']));

And then check your Website Root Dir under Admin > General and make sure it ends in /public_html to match your folder structure.

Let me know if that works for you.

Dave Edis - Senior Developer

Hey Dave,

Is there a built-in way to disable the Website/Code Backups option at a global (settings.dat.php) level? I can definitely see how it's handy for some, but with git and docker workflows, it's unnecessary and TBH, for security reasons, I don't want someone to be able to download the codebase just by having a CMS admin login.

I can remove it manually, but a built-in option would be great so I don't have to manually remove it again after any future upgrades.



By Dave - May 23

Hi Rob, 

We can add an option to hide it, maybe in /data/settings?

Can you tell me more about your use case, though, because the Admin access grants any user a lot of options to execute PHP, shell, MySQL code.  And are you looking to just hide it aesthetically, or completely disable? 

Thanks for your feedback!

Dave Edis - Senior Developer