Getting Started with SynaptikCMS
Installation
The installation is hassle-free.
- Extract the ZIP archive
- Upload the files to your server
- Visit
yourdomain.com/install.phpto complete the initial setup (site name, language, admin password, admin folder name).
It is recommended to change your website's /admin folder name for added security.
Server requirements
Web server
| Requirement | Minimum | Notes |
|---|---|---|
| Web server | Apache 2.2+ | Nginx works but requires manual config — see below |
| PHP | 7.4 | Arrow functions (fn() =>) used in the data layer |
| Database | — | None required. Flat-file JSON architecture |
Required PHP extensions
| Extension | Used for |
|---|---|
json | All read/write operations on .json data files |
mbstring | Search engine, contact form validation, UTF-8 string ops |
hash | HMAC tokens (contact form CSRF, theme preview signing) |
session | Admin authentication |
pcre | Slug sanitization, HTML purification, content parsing |
filter | Email validation in the contact form |
fileinfo | MIME type detection on file uploads |
Required for image features
| Extension | Used for |
|---|---|
gd | Image resizing, thumbnails, JPEG/PNG/GIF optimisation |
| GD + JPEG support | .jpg / .jpeg uploads |
| GD + PNG support | .png uploads |
| GD + GIF support | .gif uploads |
GD is bundled with most PHP packages. Verify JPEG and PNG support are compiled in via phpinfo() → GD section.
Optional extensions
| Extension | Used for |
|---|---|
| GD + WebP support | WebP conversion via imagewebp(). Gracefully disabled if absent |
zip / ZipArchive | Theme upload via ZIP archive. The theme manager warns if missing |
Browser (admin panel)
| Browser | Minimum version |
|---|---|
| Chrome / Edge | 80+ |
| Firefox | 75+ |
| Safari | 13.1+ |
Internet Explorer is not supported.
Filesystem permissions
The following paths must be writable by the PHP process (www-data or apache):
| Path | Required for |
|---|---|
/ (root) | Writing settings.json, install.lock during setup |
/data/ | All content read/write |
/data/articles/ | Article JSON files |
/data/pages/ | Page JSON files |
/data/projects/ | Project JSON files |
/files/ | Media uploads |
/bckps/ | Database backup exports, CSS edits backups |
/private/ | Contact rate-limiting, CSRF secret |
/admin/ | Credential file write, draft autosave |
/admin/drafts/ | Autosave draft files |
/theme/ | Theme upload (ZIP import) |
Recommended: 755 for directories, 644 for files.
Apache configuration
Required modules
| Module | Why |
|---|---|
mod_rewrite | All front-end URLs (/article/my-slug/) route through index.php |
mod_authz_core | .htaccess access control on /data/ and /bckps/ |
Required directive
AllowOverride All
Must be set on the document root in your VirtualHost or httpd.conf. Without it, .htaccess files are silently ignored and URL rewriting stops working.
Root .htaccess rewrite block
RewriteEngine On
# If installed in a subdirectory, uncomment and set this:
# RewriteBase /your-subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
Nginx (not officially supported)
The CMS works on Nginx but .htaccess has no effect. Replicate the rules manually:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/(data|bckps)/ {
deny all;
}
location ~ (settings\.json|data\.json|admin-credentials\.php)$ {
deny all;
}
Pre-flight checklist
[ ] Apache 2.2+ with mod_rewrite enabled
[ ] AllowOverride All set on the document root
[ ] PHP 7.4 or higher
[ ] PHP extensions: json, mbstring, hash, session, pcre, filter, fileinfo
[ ] PHP GD with JPEG and PNG support
[ ] ZipArchive (recommended — required for theme upload)
[ ] Root .htaccess in place and not overridden
[ ] Write permissions on: /, /data/, /files/, /bckps/, /admin/, /theme/
