System Requirements
WHMCS is compatible with most web server environments that use PHP and MySQL®. However, before you can install or update WHMCS, you must ensure that your setup meets the system requirements for your chosen version. For example, before you can upgrade from WHMCS 8.9 to WHMCS 8.11, you must ensure that your system meets all of the system requirements for WHMCS 8.10.
- If you want to use the Automatic Updater, make sure that you meet our Automatic Updater requirements.
- Read the release notes for each version carefully. Upgrading dependencies in the wrong order may cause serious issues.
- Make sure to check the Marketplace listings for your custom modules. They may have additional requirements.
Supported Versions
We currently support the following versions of WHMCS:
WHMCS Version | Current Tier | Release Notes | Anticipated End-of-Life Date |
---|---|---|---|
WHMCS 8.11 | General Availability | 8.11 Release Notes | September 30, 2025 |
WHMCS 8.10 | Long-Term Support | 8.10 Release Notes | April 30, 2025 |
WHMCS 8.9 | Long-Term Support | 8.9 Release Notes | January 31, 2025 |
These releases are in the Active Development stage of our development cycle. All prior versions have reached End-of-Life (EOL) and we no longer maintain them or release updates for them, regardless of the reason. If you currently use an EOL version of WHMCS, we recommend updating to a supported version as soon as possible.
System Requirements
To successfully run currently-supported versions of WHMCS, your system must meet the following requirements:
Required | Recommended | |
---|---|---|
Operating System | Linux® | N/A |
Apache® Web Server | Apache 2.x | N/A |
Apache Extensions | N/A | mod_rewrite |
Apache Handler (Learn More) | Any virtual host or server-wide handler. | N/A |
PHP Version (Learn More) | PHP 7.2, 7.3, 7.4, or 8.1 (WHMCS 8.0 through 8.10) PHP 7.2, 7.3, 7.4, 8.1, or 8.2 (WHMCS 8.11 and later) | |
ionCube Loader® | 10.2.0 (PHP 7.2) 10.3.1 (PHP 7.3) 10.4.3 (PHP 7.4) 12.0.1 (PHP 8.1) 13.0.2 (PHP 8.2) | N/A |
PHP Extensions (Learn More) |
|
|
PHP Memory Limit | 64 MB | 128 MB |
MySQL Version (Learn More) | 5.2 | 8.0 |
- We strongly recommend using the latest available, stable releases of all software and extensions above.
- Memory and disk space requirements vary depending upon the installation’s size and activity level.
- The information above only contains requirements for our currently-supported versions. For system requirements for updating from older End-of-Life (EOL) versions, see Updating Through EOL Versions.
System Environment
WHMCS is designed for a traditional LAMP (Linux, Apache, MySQL, PHP) environment that uses the standard Linux file system and cron subsystem. We validate WHMCS to run in Linux based environments running the Apache web server. Other environments like Windows®-based configurations will experience compatibility issues that WHMCS Technical Support does not support.
- Some WHMCS installations successfully use NGINX® instead of Apache, but we can only provide limited assistance with these systems.
- If you must use something other than the supported LAMP environment, consult with your hosting provider or system administrator to evaluate your system’s viability and long-term needs.
Apache Handlers
You can choose to use virtual host handlers or server-wide handlers.
- Virtual host handlers (for example, suPHP or
mod_ruid2
) execute the PHP process as a specific user based on the domain name. - Server-wide handlers (for example, CGI or
mod_php
) execute all PHP code as the same user.
Apache Directives
WHMCS uses configuration directives in the following .htaccess
files:
- The
~/.htaccess
file contains themod_rewrite
directives that send routable paths through theindex.php
file. This allows the internal routing system to function and creates friendly URLs. - The
~/vendor/.htaccess
file prevents directly serving files from the~/vendor
directory while allowing WHMCS to access its libraries.
MySQL Database
WHMCS requires MySQL for successful database operation. However, binary-compatible alternatives like MariaDB® may also work for some installations.
Database Privileges
For the installation process, WHMCS requires the following database privileges:
ALTER DROP LOCK TABLES
CREATE INDEX SELECT
DELETE INSERT UPDATE
For daily operations, you can restrict WHMCS’s database by removing the ALTER
, CREATE
, DROP
, and INDEX
privileges. WHMCS only requires these privileges for installations, updates, and activating or deactivating modules.
Encrypted Database Connections
Support for encrypted MySQL connections uses the following configuration variables in the configuration.php
file. You can use the following variables:
db_tls_ca
— The path to the CA .pem file (for example,/var/www/html/whmcs/ca.pem
).db_tls_ca_path
— The path to the directory that contains the CA certificate files.db_tls_cert
— The path to the client’s certificate.db_tls_cipher
— A list of one or more ciphers to use for SSL encryption, in an OpenSSL-compatible format.db_tls_key
— The path to the client’s key.db_tls_verify_cert
— Disable (0
) or enable (1
) the server certificate.If you setdb_tls_verify_cert
to1
(enabled), thedb_host
value in theconfiguration.php
file must match the Common Name (CN) or be a Subject Alternative Name (SAN) of the certificate that you specify fordb_tls_cert
. If it does not match, you will see an error. For more information, see Could Not Connect Errors.
If you set db_tls_verify_cert
to 1
(enabled), the db_host
value in the configuration.php
file must match the Common Name (CN) or be a Subject Alternative Name (SAN) of the certificate that you specify for db_tls_cert
.
- If the hostname does not match and
db_tls_verify_cert
is enabled, you will see aCould not connect to database
error. - To resolve this issue, set
db_tls_verify_cert
to0
or provide a new certificate with a CN or SAN that matches thedb_host
value.
You can configure these variables before, during, or after installation using the command-line installation method or after installation using the browser-based installation method.
- For steps to enable this feature, see Enable Encrypted MySQL and The configuration.php File.
- For more information about configuring MySQL, see Using Encrypted Connections and Server State Variables.
- For steps to configure encrypted MySQL connections on cPanel & WHM servers, see cPanel’s How to Configure MySQL SSL Connections Documentation.
PHP
Whenever possible, we recommend using a PHP version that is in active development or is receiving security fixes from upstream PHP maintainers.
- Issues in your PHP configuration can cause serious problems or prevent you from using certain features. For example, you may see warnings if the PHP version that the system cron uses does not match the web server’s version.
- Some features may have additional requirements. For example, the Automatic Updater requires specific PHP settings.
PHP Extensions
In addition to the extensions above, WHMCS requires the default compiled extensions (for example, PDO, mysqlnd, JSON, libxml, DOM, or Fileinfo).
- If an extension that does not appear in the list is compiled by default in your version of PHP, do not disable it.
- PCI compliance may require TLS 1.2.
- Do not compile PDO_MySQL with libmysqlclient. You must compile it with mysqlnd. For more information, see PHP.watch’s removal notice.
File Permissions
The permissions settings that WHMCS requires depend on your exact system configuration. For example, we recommend the following permissions for a standard cPanel & WHM server:
configuration.php
—400
/crons/pipe.php
—755
- All other PHP files —
644
- All directories —
755
The file ownership and group should be the same as the user directory name. For example, on a cPanel & WHM server with a web root at /home/username/public_html/
, username
would own the files and the group would also use the name username
.
The owner and group of the PHP process must be the same as the user directory name. For example, on a cPanel & WHM server with a web root at /home/username/public_html/
, the PHP process owner and group would both be username
.
For most WHMCS installations, we recommend the following permissions:
File or Directory | chmod Permission |
---|---|
configuration.php | 400 (Readable) |
/attachments | 777 (Writeable) |
/downloads | 777 (Writeable) |
/templates_c | 777 (Writeable) |
All other files | 644 (Owner writeable, otherwise readable) |
All other directories | 755 (Owner writeable, otherwise readable and executable) |
- This does not apply to installations using suPHP or phpSuExec.
- If you use DSO as your PHP handler, you must use
644
permissions.
Last modified: October 30, 2024