How to install WebEngine CMS for your MU Online server
Install and configure WebEngine CMS from scratch for your MU Online server site, connecting to the emulator's database securely and enabling essential modules like rankings, downloads, and account registration.
The site is the first thing a player sees before entering your MU Online server. It's where they create the account, check the ranking, download the client, and follow events. Building that site manually in plain PHP is possible, but laborious and risky from a security standpoint. WebEngine CMS solv
The site is the first thing a player sees before entering your MU Online server. It's where they create the account, check the ranking, download the client, and follow events. Building that site manually in plain PHP is possible, but laborious and risky from a security standpoint. WebEngine CMS solves this: it's a content management system made specifically for MU Online servers, already shipping with account registration, rankings, a user panel, a credits system, downloads, and direct integration with the emulator's database. This tutorial shows, at an advanced level, how to install WebEngine from scratch, connect it securely to the server's database, and get it production-ready.
Before starting, understand the overall design. WebEngine is a PHP application that reads and writes to the same tables the game emulator uses (the account, character, and warehouse tables). The game server traditionally runs on Windows with SQL Server; the site can run on the same Windows (via IIS or XAMPP) or on a separate Linux host, as long as it can reach the SQL Server over the network. All the installation work revolves around three axes: uploading the PHP files, making sure PHP can talk to SQL Server, and configuring the correct credentials and table names.
Prerequisites
Before touching any file, make sure you have everything below. Skipping this stage is the number-one reason for installations that "don't work."
- A MU server already installed and with a working database on SQL Server. If you haven't reached that stage yet, start with the guide on how to create a MU Online server, which covers the base before the site.
- A web server with PHP. It can be IIS or Apache (XAMPP/WAMP) on Windows, or Apache/Nginx on Linux. The required PHP version varies by version of WebEngine; recent builds require PHP 7.4 or 8.x.
- A SQL Server driver extension for PHP (
sqlsrvandpdo_sqlsrvon Windows, orpdo_dblib/FreeTDSon Linux). Without it the site won't connect to the database. - SQL Server credentials: ideally a dedicated low-privilege user, not
sa. - FTP or filesystem access to upload the CMS files.
- A domain or, for testing, access via IP/localhost.
| Component | Role | Where it runs (example) |
|---|---|---|
| Game emulator | MU logic, GameServer/ConnectServer | Windows VPS |
| SQL Server | Database of accounts, characters, items | Windows VPS |
| PHP + WebEngine | Site, registration, ranking, panel | Linux host or the same Windows |
| sqlsrv/PDO driver | Bridge between PHP and SQL Server | Alongside PHP |
> Warning: the table and column names mentioned below (MEMB_INFO, Character, AccountCharacter) are common examples from the Season 6 line. The real schema varies by emulator and by version. Always check the mapping in the CMS configuration panel.
Step 1: Download the correct WebEngine version
WebEngine is distributed as a package of PHP files. Always download the latest stable version from the project's official source, not from random repositories that may contain backdoors. An essential security practice in the MU scene: never use a "modified" CMS offered on a forum without auditing the code, as it's a classic shell-injection vector.
After downloading, unzip it into a local folder. You'll see a structure similar to this (varies by version):
webengine/
├── index.php
├── includes/
│ └── config/ # configuration files
├── modules/ # modules: rankings, downloads, etc.
├── themes/ # site themes
├── admincp/ # admin panel
└── install/ # installation wizard (delete afterward!)
Step 2: Prepare PHP and the SQL Server driver
This is the step that causes the most headaches. PHP, by default, does not talk to SQL Server. You need to install and enable the driver.
On Windows with PHP, download Microsoft's sqlsrv drivers compatible with your exact PHP version (compatibility varies by version: thread-safe vs non-thread-safe, x64 vs x86). Copy the .dll files into PHP's ext/ folder and add them to php.ini:
extension=php_sqlsrv_81_ts_x64.dll
extension=php_pdo_sqlsrv_81_ts_x64.dll
On Linux, the path is usually via pecl install sqlsrv pdo_sqlsrv with Microsoft's msodbcsql package, or using FreeTDS/pdo_dblib as an alternative. Restart the web server and validate with a temporary file:
<?php
// teste-driver.php — delete after use
phpinfo();
// Look for "sqlsrv" or "pdo_dblib" on the generated page.
Open teste-driver.php in the browser and confirm the driver appears. If it doesn't, PHP didn't load the extension and nothing else will work. Fix this before continuing.
Step 3: Create a low-privilege SQL user
Never connect the site with the sa user. If the site is compromised, the attacker inherits full control of the database. Create a dedicated user with permission only on the tables the site needs:
-- Run on SQL Server, adjusting the database name
USE [master];
CREATE LOGIN web_mu WITH PASSWORD = 'SenhaForteAqui#2024', CHECK_POLICY = ON;
GO
USE [MuOnline]; -- database name varies by emulator
CREATE USER web_mu FOR LOGIN web_mu;
-- Grant only read/write on the game tables
ALTER ROLE db_datareader ADD MEMBER web_mu;
ALTER ROLE db_datawriter ADD MEMBER web_mu;
GO
This way, even in the event of a breach, the damage is limited to reading/writing data, without being able to drop tables or create logins.
Step 4: Upload the files to the web server
Send the contents of the webengine/ folder to your web server's public directory (for example htdocs/, www/, or wwwroot/) via FTP or a direct copy. Make sure the write permissions are correct on the folders the CMS needs to write to (cache, uploads, config), typically something like 755 for folders and 644 for files on Linux. Avoid 777: it's a common and unnecessary security flaw.
Step 5: Run the installation wizard
With the files in place, go to http://yourdomain.com/install/ in the browser. The WebEngine wizard will guide you through stages (the exact flow varies by version):
- Requirements check — the installer checks the PHP version, extensions, and folder permissions. Fix any item flagged in red before proceeding.
- Database connection details — enter the SQL Server host/IP, port (1433 by default), database name, user (
web_mu), and password. - Table mapping — confirm the account and character table names of your emulator.
- Administrator creation — set the CMS panel admin user.
- Completion — the installer writes the configuration file.
Example of what the final config usually looks like (names vary by version):
<?php
// includes/config/config.database.php
$config_database_host = '203.0.113.10'; // SQL Server IP
$config_database_port = '1433';
$config_database_name = 'MuOnline';
$config_database_user = 'web_mu';
$config_database_pass = 'SenhaForteAqui#2024';
$config_database_driver = 'sqlsrv'; // or dblib on Linux
Step 6: Delete the installation folder
This step is mandatory and often forgotten. The install/ folder allows the entire site to be reconfigured, including the database credentials. Leaving it accessible is handing your server over on a plate.
# On the server, after completing the installation
rm -rf /path/to/webengine/install/
If the CMS still detects the folder and refuses to work, that's exactly the security mechanism forcing you to remove it. Confirm the deletion.
Step 7: Configure essential modules
Log into the admin panel (/admincp/) with the admin user you created. From there, enable and configure the modules that bring the site to life:
- Account registration — defines password rules, email verification, and bot protection. Registration security is critical; passwords must be stored hashed, never in plain text (WebEngine already handles this, but confirm in the options).
- Rankings — top resets, PK, guilds. Configure caching so it doesn't hit the database on every access.
- Downloads — game client links. Host on a CDN or your own storage.
- Credits/donation system — optional; if you're going to charge, handle payments with prepared statements and validate every gateway callback.
Step 8: Adjust theme and SEO
Choose a theme in themes/ and activate it in the panel. Customize the logo, colors, and text. Configure the title, meta description, and friendly URLs so the site shows up well on Google. A clean, fast site converts far more visitors into players.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Blank screen when opening the site | Hidden fatal PHP error (missing driver, incompatible version) | Enable display_errors or read the PHP error log; fix the sqlsrv extension |
| "Could not connect to database" | Wrong credentials, port 1433 closed, SQL Server without TCP/IP | Test the connection, open the firewall, enable TCP/IP in SQL Server Configuration Manager |
| Empty ranking even with players | Wrong table/column names in the mapping | Adjust the mapping to your emulator's schema |
| Registration creates account but game login fails | Password format mismatch between site and emulator | Confirm the hash algorithm the emulator expects; varies by version |
| Admin panel accessible by anyone | Install folder not deleted / weak password | Delete install/, change the admin password, restrict admincp by IP if possible |
| 500 error when writing cache | Insufficient folder permissions | Adjust write permissions on the cache/upload folders (don't use 777) |
Launch checklist
- Game server and SQL Server working before the site
- PHP at the version required by your WebEngine build
- sqlsrv/PDO driver loaded and confirmed in phpinfo
- Dedicated low-privilege SQL user created (not sa)
- Port 1433 opened only to the site's IP
- Files uploaded with correct permissions (no 777)
- Installation wizard completed successfully
install/folder deleted- Panel admin password strong and unique
- Registration, ranking, and download modules tested
- Registration validated: an account created on the site logs into the game
display_errorsturned off in production- Database and site file backup scheduled
With WebEngine installed and hardened, you have a professional site that talks directly to the server, reduces manual work, and offers a reliable entry point for new players. The secret to success isn't just installing, but maintaining: apply security updates, monitor the logs, and review permissions periodically. A well-maintained site is as important as a well-balanced server.
Frequently asked questions
Is WebEngine CMS free?
The WebEngine CMS core is open source and free to use. There are paid plugins and themes created by the community, but the CMS core and the ranking, registration, and account modules cost nothing. You only pay for hosting and, if you want, for premium themes.
Which PHP version does WebEngine require?
It depends on the CMS version. Old builds ran on PHP 5.6, while more recent revisions require PHP 7.4 or 8.x with the sqlsrv or pdo_sqlsrv extension. Check your version's README, since the requirement varies by version and using incompatible PHP is the most common cause of a blank screen.
Do I need the database on the same server as the site?
No. The PHP site can sit on a Linux host and the emulator's SQL Server on a separate Windows VPS. You just open port 1433 only to the site's IP and use a low-privilege SQL user. Keeping web and database separate is actually more secure.
Why does a blank screen appear after uploading the files?
A blank screen is almost always a hidden fatal PHP error. The most common causes are a missing sqlsrv extension, an incompatible PHP version, or wrong credentials in the config. Enable display_errors temporarily or read the PHP error log to see the real message before anything else.
Does WebEngine work with any MU emulator?
It was designed for the line of emulators based on SQL Server (Season 6 and derivatives, as the community standard). The expected account and character table structure varies by emulator, so adjust the table and column names in the CMS configuration panel to match your server.