Skip to content
ESC

Searching...

Quick Links

Type to search • Press to navigate • Enter to select

Keep typing to search...

No results found

No documentation matches ""

Manual File Replacement.

Update by uploading files via FTP or SFTP. The fallback method for shared hosting and environments without exec().

Apr 9, 2026

Manual file replacement is the universal fallback for updating Reward Loyalty. You download the latest version, upload the files to your server via FTP or SFTP, and run migrations manually. No exec() function needed.

This is the right method when:

  • Your hosting provider disables the exec() PHP function (common on shared hosting)
  • You don't have SSH or CLI access
  • You prefer full manual control over every file that changes

💡 If your server supports exec(), consider Install from Package instead. It automates backup, extraction, and migration while still letting you control which version to install.

Updates are free forever. You're installing them yourself instead of using the automated system.

Before You Start

Back up everything. Download your entire installation before making changes, especially:

  • Your .env file (environment configuration)
  • Everything in public/files/ (user uploads and media)
  • database/database.sqlite if using SQLite (MySQL/MariaDB users skip this, the database is external)

Update Steps

This approach keeps your production site running while you prepare the update. If you don't have a staging environment yet, see Staging Installation for setup guidance.

1. Upload the new version to a temporary subdomain (like staging.yourdomain.com).

2. Copy your data from your current production installation to the staging installation:

Your .env file contains your environment configuration. The public/files/ directory contains all user uploads. If you use SQLite, copy database/database.sqlite as well.

To see hidden files like .env on macOS, press Cmd + Shift + . in Finder.

3. Run database migrations by logging in as admin at /en-us/admin/. If migrations are pending, you'll see a message: "An update is required for your database. Click here to apply the update." You can also run php artisan migrate --force via command line if you have CLI access.

4. Clear caches by deleting the contents of bootstrap/cache/:

rm -f bootstrap/cache/*.php

If you have CLI access, you can also run php artisan optimize:clear.

5. Test everything. Verify login works, member data is intact, and uploaded files display.

6. Switch to production by updating your DNS to point your main domain to the staging installation, or rename directories if both are on the same server.

Option B: In-Place Update

If you prefer not to use a staging subdomain:

1. Back up everything as described above.

2. Delete or move all files on the server to a backup folder.

3. Upload the new version from the public_html folder in the product zip.

4. Restore your data by copying back your .env file, your public/files/ contents, and database/database.sqlite if using SQLite.

5. Run migrations and clear cache as described above.

The new version includes an empty public/files/ directory. Depending on your upload method, this may overwrite your existing uploads. Always back up first and restore after.

Clearing Caches After Update

After replacing files, you should clear cached configuration to prevent 500 errors:

  1. Delete bootstrap cache files: Remove all .php files in bootstrap/cache/
  2. Clear framework cache: If you have CLI access, run php artisan optimize:clear
  3. Reload the page: Your admin dashboard should load with the new version

If your site shows a 500 error after updating, clearing bootstrap/cache/ resolves it in most cases.

Protecting Custom Files

When updating manually, you manage protected paths yourself by backing up and restoring any custom files. To ensure these same files are also protected during future automated updates, add them to your .env file:

PROTECTED_TRANSLATIONS="de_DE,fr_FR"
PROTECTED_PATHS="custom/branding/"

See What Gets Preserved for the complete list of core protected paths.

Consider Automated Updates

Manual file replacement works on any hosting, but automated methods are faster and handle backups for you:

  • Dashboard Update: one click, fully automatic. Requires active support + exec().
  • Install from Package: place the zip on your server, dashboard handles the rest. Requires exec() but no active support.

If you're on VPS hosting with exec() available, either method is faster and safer.