Server Installation

System Requirements
A Windows or Linux web server with a PHP version 7.0 or higher. To view currently supported versions, see the system requirements.
SSL installed so your server loads over https for secure encryption and your API data is sent over a secure network.
Mcrypt library enabled for data encryption (not required for white label licence). Required for PHP7.0* ONLY.
OpenSSL library enabled for data encryption, PHP7.1* or higher (not required for white label licence).
1 MySQL/MariaDB database to hold the script tables. MySQL5+ is recommended. This is set up on your web server.
GD Graphics Library functions enabled on server for basic captcha creation.
MySQL Improved Extension (mysqli) functions enabled on server for database connection.
CURL functions enabled for Twitter API and admin version check.
JSON functions enabled for ajax operations and API.
Modern web browser (Internet Explorer, Firefox, Opera, Maxthon, Safari, Chrome etc) with Javascript enabled.

The installer will check what functions are available.
Pre-Checks / Recommendations
1. DO NOT unzip files directly on a server using something like CPanel. It is unreliable and can screw up the files. Upload via FTP.

2. Use a good quality text editor to edit files, NOT a word processor. Make sure your text editor is set NOT to save with the BOM (Byte Order Mark). Some excellent free text editors are: PSPad, CudaText, RJ TextEd & SynWrite. Plain old notepad is also fine.

3. For a live environment, it is recommended you do NOT use shared servers. Shared servers are slow, have restrictions and are generally not very reliable. Cheap VPS servers are a much better option.

4. Patience. Read the instructions carefully and hopefully you'll have no problems. If you do, see the support options.
1 Create Database
If you haven't already done so, create a database to hold the script tables. An existing database is fine. As this procedure can vary from server to server, if you are unsure of this, please contact your host.
2 Create Config File
Copy the 'control/_cfg-sample.php' file as 'control/_cfg.php'.
3 Setup Database Connection
Using your text editor, open the control/_cfg.php file and perform the following actions:

[A] Edit database connection parameters to point to the database you wish to use. Contact your host if you aren't sure. Prefix is required if you only have a single database. This might be something with an underscore. It's fine to leave the prefix as is, so don't change if you aren't sure. See notes. Example:

define('DB_HOST', 'localhost');
define('DB_USER', 'joeblogs_admin');
define('DB_PASS', '12345XX');
define('DB_NAME', 'affiliate');
define('DB_PREFIX', 'maff_');
[B] Specify timezone for database. If you have no data issues with your server and date display, this will NOT need changing. In most cases the PHP timezone will be fine. This is added as a convenience only. Time in hrs:mins.

define('DB_TIMEZONE', '+00:00');
[C] Specify character set for database. Can be left blank if preferred. Used for 'Set Character Set' and 'Set Names'. If you aren't sure, utf8 should be fine. See notes:

define('DB_CHAR_SET', 'utf8');
[D] Specify locale for your database. Only really required to be changed if your language isn't English. This will ensure text data in dates converted by MySQL is in your local language. For English, 'en_GB' should be fine for all. See notes:

define('DB_LOCALE', 'en_GB');
[E] Specify unique secret key (or salt). You can use the Maian Media secret key service to generate a unique key. See the connection file for more information.

define('SECRET_KEY', 'your unique string here');
4 Set Administrator Access Login Details
Again, in the control/_cfg.php file create an administrator username/password. Example:

define('LG_USER', 'joebloggs');
define('LG_PASS', 'xxx123789');
If you want to restrict the administrator to a certain IP address or addresses, enter the IP addresses in the 'LG_RESTRICT_BY_IP' box. For multiple, comma delimit.
5 Transfer Files to Server
Using a good FTP program such as FileZilla or WinSCP, transfer the 'affiliate' folder to your web server.

Most good FTP programs auto detect 'ascii' mode for PHP files. However, if you are presented with an option, you should specify 'ascii' and not 'binary'.

- 'affiliate' may be renamed if you wish.
- Files can also be uploaded to root of web server if you wish. Open 'affiliate' folder and transfer files.
6 Folder Permissions
The following folders are required to have read/write permissions. On Linux 0777 or 0755 should be used:

content/promo/
logs/
To change file permissions, right click the folders in the FTP software. Be careful, entering the wrong code could make a folder inaccessible. If this happens accidentally, you may need server root access to fix the problem.
7 Accessing the Installer or Manual Install
Once the files have transferred successfully, access the 'install' folder in your browser. An example if your website was at 'example.com/affiliate/':

http://www.example.com/affiliate/install/
Follow the on screen instructions. Alternatively, if you are an advanced user and you are familiar with executing SQL files, run the following file in your MySQL database management program.

docs/schematic/database-schema.sql
The following FREE applications can be used to administer MySQL and are all excellent:

HeidiSQL (My software of choice for local administration on Windows and one of the best free pieces of software out there)
PHPMyAdmin (Installed on many servers as the default database software. PHP based.)
Adminer (Single PHP file. Brilliant and best server based option imo)
SQL Buddy (Lightweight PHP based software. Great alternative to PHPMyAdmin.)
MySQL Workbench (Powerful Windows based software from the MySQL creators)
Database Beaver (Free database management software for Windows. Java required.)
NOTE: If you manually run the 'docs/schematic/database-schema.sql' file you do NOT need to access the install folder! Also the manual install will NOT install the demo system. Finally, you may need to enable remote sql in your server control panel and add your IP to your whitelist.
SECURITY ALERT
If you have successfully run the installer or the SQL file manually you should make absolutely sure that the 'install' directory NO longer exists in your installation. If you wish to keep a copy of it on the server rename it or move it somewhere else.

Leaving the 'install' folder in place is a major security risk. Your system can be compromised if this file is run again. For added security the system will check that this folder does not exist.
8 Access System
If everything has gone ok, your system will now be accessible at the url it was installed. Examples if your system was installed at 'example.com/affiliate/'

http://www.example.com/affiliate/
http://www.example.com/affiliate/admin/
9 Rename Administration Folder
For security it is highly recommended you rename your 'admin' folder. To do this perform the following operations:

[A] Manually rename the 'admin' folder to something unique. Letters, numbers, underscores or hyphens should be used, no special characters.

[B] Open the 'control/options.php' file in a text editor and specify the new name in the 'ADM_FLDR_NAME' option.
10 Install SSL
You MUST ensure your server has a valid SSL certificate installed for security. With security and privacy being big concerns these days, it is foolish not to have this option available. SSL certificates are very cheap nowadays. You can even get FREE SSL certificates via Let's Encrypt and SSL for FREE.
11 Getting Started
Now that the system is installed, refer to the main install page for further instructions.