Hosting platforms

Installing on Windows 10/11 with WampServer

A local WAMP install for testing before you go live

Use this guide to rehearse an RKHM installation on a Windows 11 or Windows 10 PC with WampServer (Apache, PHP, and MySQL/MariaDB). It covers what differs from a hosted server: a local VirtualHost, WampServer's PHP settings, a local database, and Windows Task Scheduler. Continue through the standard installation guide for RKHM's own installer. A local WAMP site is for development and testing; use a supported server and HTTPS for a public launch.

Windows 10 note: Microsoft ended standard support for Windows 10 on 14 October 2025. Use Windows 11 for a new test machine, or keep an eligible Windows 10 machine covered by Extended Security Updates. See Microsoft's support notice.

Before you begin

  • Have the RKHM release ZIP and purchase code ready. Use an account allowed to install WampServer and manage its services. Keep the PC's Apache and database services running while testing; a sleeping or shut down PC cannot serve RKHM or run its jobs.
  • Read RKHM's licence terms before submitting a purchase code. The installer binds a licence to one domain address and an address change may require a reset. A local test hostname is a separate address from your future production site. You can test on localhost, reset your license then use RKHM on your online server
  • The examples use C:\wamp64, C:\wamp64\www\rkhm, and rkhm.test. Replace them with your actual WampServer drive, site directory, and approved hostname. The example hostname must resolve to this PC and be reachable from PHP itself for RKHM's route check.

1. Install and start WampServer

Download the current 64 bit full installer from the WampServer project site. That page lists the current package, PHP versions, updates, and the required Microsoft Visual C++ redistributables. Check the VC++ packages first: WampServer says 64 bit Windows needs both x86 and x64 packages. Install missing prerequisites from the linked Microsoft downloads, then install WampServer as administrator. The current project site describes WampServer as a local development platform with Apache, PHP, MySQL/MariaDB, and phpMyAdmin.

Launch WampServer from its shortcut and start all services. Open http://localhost/ to confirm Apache responds. If WampServer cannot start, resolve its reported service or port conflict before adding RKHM; another web server already using port 80 is a common cause. Keep WampServer's default local-only access while preparing this test site.

2. Make a VirtualHost for RKHM

Create C:\wamp64\www\rkhm. Extract the release ZIP, open its script directory, and copy the contents into that folder. index.php, api, admin, installer, and the root .htaccess must sit directly in rkhm; do not leave an extra script directory in the URL path. Windows Explorer can hide names beginning with a dot, so inspect the extracted files carefully. RKHM's installer hashes several original .htaccess files: preserve every one and do not edit them.

From WampServer's http://localhost/ page, open Tools → Add a Virtual Host. Enter rkhm.test as the host name and C:\wamp64\www\rkhm as the absolute path, then create the host. WampServer may ask for a service restart; use its tray menu to restart all services. The screenshot shows the form layout; installed versions and optional fields can differ.


WampServer VirtualHost form Screenshot: Rupamita Sarkar.

Open http://rkhm.test/installer/. If the name does not resolve, check that the Windows hosts file C:\Windows\System32\drivers\etc\hosts contains a 127.0.0.1 rkhm.test entry; edit it as administrator only if WampServer did not create it. The site must also be reachable from the local PHP process. Use the same exact URL, including scheme and trailing slash, when RKHM asks for the website address. 

3. Match WampServer PHP to RKHM

In WampServer's tray menu, select PHP 8.3 or newer (RKHM requires it since v2.1.04). Under PHP → PHP extensions, enable curl, mysqli, mbstring, gd, and zip. In the active PHP settings, ensure allow_url_fopen is on. Restart all services after changes, then refresh the installer Requirements step. Those are the checks in RKHM's installer; it also refuses to start on PHP older than 8.3.

Make Apache load mod_rewrite and mod_headers and allow RKHM's original .htaccess rules in the site's directory. WampServer's Apache modules menu can enable the modules; the VirtualHost's <Directory> block should permit AllowOverride All for C:/wamp64/www/rkhm. Change the Apache host configuration if needed, then restart services. RKHM's Server step checks both the files' original hashes and a live request to /api/client_config. Apache documents AllowOverride and mod_rewrite.

4. Activate the RKHM licence

Follow the Licence step with the exact local or staging URL you decided to use, such as http://rkhm.test/. The installer sends the host to the licence service and writes the full website address to its configuration. A later move to your public domain is an address change under RKHM's licence terms. If the licence check fails, resolve the licence/hostname issue through our support team; editing the generated config or licence files does not replace activation.

5. Create a local database

Open http://localhost/phpmyadmin/ from WampServer. If it offers MySQL and MariaDB choices, select MySQL for this example and confirm it listens on the default port 3306. In User accounts → Add user account, create a local user named rkhm_local with a strong password. Create a new empty database named rkhm_local and grant that user privileges on that database, including table creation and schema changes needed by RKHM's importer. Do not grant global privileges. See phpMyAdmin user management.

At RKHM's Database step, enter host localhost, database rkhm_local, user rkhm_local, and the password you just chose. Enter a separate RKHM admin email and password. The installer imports the schema into the empty database.

6. Run the one minute job with Task Scheduler

At RKHM's Server step, Windows Task Scheduler replaces the Unix cron entry shown by the installer. Find the php.exe inside the WampServer PHP version selected for RKHM, for example C:\wamp64\bin\php\php8.3.28\php.exe (replace 8.3.28 with your installed folder). Use that full path, not a different PHP installed on Windows. In Command Prompt, run the following once to see any CLI error before scheduling it:

Running this command once will mark cronjob as "ok" for installer and you can finish the installation without adding a "schedule" on windows. Then whenever you needed to run cronjobs, you can do it manually again. This is how I personally test on Windows. There is rarely a need for cronjobs actually run on Windows since it's usually only used to test the products

"C:\wamp64\bin\php\php8.3.28\php.exe" -f "C:\wamp64\www\rkhm\api\admin.php" bof_cronjobs=yes

Open Task Scheduler with taskschd.msc and choose Create Task. Name it RKHM cron. On Triggers → New, choose On a schedule, set a start time, check Repeat task every: 1 minute, choose for a duration of: Indefinitely, and leave the trigger enabled. In Actions → New, choose Start a program and fill the fields as follows:

Program/script: C:\wamp64\bin\php\php8.3.28\php.exe
Add arguments: -f "C:\wamp64\www\rkhm\api\admin.php" bof_cronjobs=yes
Start in: C:\wamp64\www\rkhm


The one minute, indefinite trigger; the task name and action in this other project differ from RKHM Screenshot: OSA-Mailer Guidebook.

On the task's Settings tab, choose Do not start a new instance if the task is already running. On a laptop, review the Conditions tab so an AC-power-only condition does not silently skip your intended local tests. Choose an account that can read RKHM files and connect to the local database. Save the task, right-click it and choose Run; then check Last Run Result and refresh RKHM's Server step after about a minute. Keep only one RKHM scheduler task. Microsoft documents repeating triggers and one minute schedules for Windows 10/11.

Finish and check

  • At the Server step, the cron heartbeat, .htaccess existence, live route check, and timezone should all pass. If the cron heartbeat stays red, confirm the task's account, executable and script paths, CLI PHP extensions, and that the database service is running. The web PHP and CLI PHP may have different php.ini files; use php.exe --ini with your actual path to inspect the CLI one.
  • If the installer says a .htaccess file is missing or corrupt, restore it from the original release ZIP. If files pass but routing fails, check the VirtualHost URL, hosts mapping, Apache mod_rewrite/mod_headers, and AllowOverride All. Do not edit RKHM's own hashed rules.
  • If upload or media processing fails later, check Windows folder permissions and PHP upload limits. FFmpeg is separate from the installer requirements; configure Windows ffmpeg.exe and ffprobe.exe only for features that use them, then run RKHM's FFmpeg check. See the FFmpeg guide.
  • When installation completes, remove the installer directory and continue with First run. Before a public launch, use a supported host with HTTPS, confirm the licence address, test external integrations and mail, and back up the database plus the files directory. A localhost rehearsal does not exercise public DNS, HTTPS, callbacks, or always-on scheduling.