In This Article
  1. What you need before you start
  2. Step 1 — Check your PHP version
  3. Step 2 — Upload and extract the files
  4. Step 3 — Set folder permissions
  5. Step 4 — Run the setup wizard
  6. Step 5 — Enable SSL
  7. Running on a subdomain
  8. Common issues and fixes

What you need before you start

CWFMS runs on any standard cPanel shared hosting account. Before you begin, confirm your hosting meets these requirements:

No database required: CWFMS uses flat-file JSON storage — there is no MySQL database to create, configure or back up. All data is stored as JSON files in the data/ directory on your hosting account.

Step 1 — Check your PHP version

Log into cPanel and navigate to Software → PHP Version Selector (or MultiPHP Manager on some hosts). Select PHP 8.1 or 8.2 if available — both are fully supported. PHP 7.4 is the minimum. If your host only offers PHP 7.3 or lower, contact them to upgrade before proceeding.

Verify PHP version via cPanel Terminal or SSH
php -v
# Should show: PHP 7.4.x or higher

php -m | grep -E 'curl|json|mbstring'
# Should list: curl, json, mbstring

Step 2 — Upload and extract the files

1
Download your CWFMS ZIP from the purchase email
After purchase, you receive a download link by email. Download the ZIP file to your computer. The file will be named something like cwfms-v2.x.x.zip.
2
Open cPanel File Manager
Log into cPanel and click File Manager. Navigate to the directory where you want to install CWFMS. To install at your root domain (yoursite.com), go to public_html/. For a subdirectory (yoursite.com/accounting), create that folder first.
3
Upload the ZIP file
Click Upload in File Manager toolbar, select your CWFMS ZIP file, wait for upload to complete. Do not close the browser during upload.
4
Extract the ZIP
Right-click the uploaded ZIP file → Extract. Extract to your target directory. Once complete, you should see files including index.php, bootstrap.php, assets/ and data/ in the folder.

Step 3 — Set folder permissions

The data/ directory must be writable by the web server. In File Manager, right-click the data/ folder → Change Permissions → set to 755. Do the same for downloads/ and uploads/ if present.

Via SSH (alternative to File Manager)
chmod 755 data/
chmod 755 downloads/
chmod 755 uploads/

Step 4 — Run the setup wizard

Open your browser and navigate to your install URL followed by /admin/setup.php. For example: https://yourdomain.com/admin/setup.php

The setup wizard will walk you through:

After completing setup, the wizard will redirect you to the admin login. Log in with the password you just set. The setup file is automatically disabled after first run for security.

Step 5 — Enable SSL

SSL is required for secure checkout and browser trust. In cPanel, navigate to Security → SSL/TLS → Let's Encrypt SSL (or AutoSSL). Click Issue for your domain. This is free and takes approximately 2 minutes. Once issued, all HTTP traffic will automatically redirect to HTTPS.

Important: Set your base URL in CWFMS admin settings to use https:// not http:// after enabling SSL. This ensures all generated links in emails and the licensing API use the secure URL.

Running on a subdomain

If you want to run CWFMS at a subdomain like accounting.yourdomain.com:

  1. In cPanel → Domains → Subdomains — create the subdomain and point it to a new directory, e.g. public_html/accounting/
  2. Upload and extract CWFMS into that directory
  3. Issue an SSL certificate for the subdomain via Let's Encrypt
  4. Run the setup wizard at https://accounting.yourdomain.com/admin/setup.php

Common issues and fixes

Blank page or 500 error after upload

Usually caused by PHP version being below 7.4. Go to cPanel → PHP Version Selector and switch to 7.4, 8.0, 8.1 or 8.2. Clear your browser cache and reload.

Permission denied errors in the data directory

The data/ folder needs write permission. Set it to 755 via File Manager → Change Permissions. If still failing, try 775.

Emails not sending after setup

Configure SMTP in admin → Settings → Email / SMTP. Use your hosting mail server credentials (usually mail.yourdomain.com, port 587, TLS). PHP's mail() function often fails silently on shared hosting — SMTP is far more reliable.

Setup wizard redirects to login without completing

This means setup has already been run once and the wizard has been disabled. If you need to re-run it, delete data/settings.json via File Manager and revisit /admin/setup.php.

See CWFMS before you install

Try the full system in the live demo — no hosting required, no sign-up, pre-loaded with data.

Open Live Demo → Pricing & Features

Related: Self-hosted accounting software guide · PHP self-hosted invoicing guide · Managing finances without a subscription