SupportPal Documentation

New Installation

Contents

Downloading SupportPal

A license with valid support and upgrade coverage is required to download SupportPal. Owned licenses include 6 months from date of purchase and leased licenses include lifetime support & upgrades. Once you have a valid license please login to the members area at http://www.supportpal.com/manage/ select an active license and choose the latest version you wish to download.

Checking Requirements

In order for SupportPal to function correctly a number of System Requirements need to be met. Before attempting an installation, please ensure these are in place.

Installation Steps

The SupportPal installation process is fairly simple, follow the following steps to get started:

  1. Download a copy of SupportPal from our members area at http://www.supportpal.com/manage/.
  2. Unzip the contents of the downloaded zip file.
  3. Upload the entire contents of the SupportPal folder to your web server (If you are using FTP use Binary Mode).
  4. Start the install process by visiting the URL where you have uploaded SupportPal, e.g. http://yourdomain.com/support.
    1. If you are receiving an IonCube encoder error please check theSystem Requirements.
  5. Follow the instructions provided by the installer.
  6. Enjoy SupportPal!

Post Installation Steps

Cron Job

The cron job is used to perform background tasks such as sending emails and closing inactive tickets. To setup the cronjob please create the below cron entry, replacing <supportpal_base_path> with your own path:

cPanel

Select Cron Jobs from the dashboard, browse down the page to Add New Cron Job. Then, select Once per minute from the Common Settings dropdown, and input the following into the Command box:

php -q /<supportpal_base_path>/cron

Linux

To ensure that the cron job runs as the web server user, please add the following entry to the /etc/crontab file replacing <web_server_user> and <supportpal_base_path> with your servers details:

* * * * * <web_server_user> php -q /<supportpal_base_path>/cron

Windows

The cron should be setup through the Windows Task Scheduler, using a command similar to the below (you may need to change the file paths):

C:\Program Files (x86)\PHP\v7.0\php-cgi.exe -q c:\inetpub\wwwroot\cron

Pretty URLs

SupportPal ships with a .htaccess file that is used to allow URLs without index.php.

Apache

If you use Apache please ensure that the mod_rewrite module is enabled.

nginx

On nginx, please create a new virtual host for SupportPal. The below is an example virtual host but will need editing for your specific environment (paths may vary):

server {
    listen 80;
    listen [::]:80;

    server_name supportpal.app;

    root /var/www/supportpal;
    index index.php;

    # Remove index.php from GET requests.
    set $user_request 0;
    if ($request_method = GET) {
        set $user_request "GET";
    }
    if ($request_uri ~* "^(.*/)index\.php/?(.*)$") {
        set $user_request "${user_request}-index.php";
    }
    if ($user_request = "GET-index.php") {
        return 301 $1$2;
    }

    # Send all requests to SupportPal.
    location / {
        try_files /notexistent @backend;
    }

    # Allow direct access to asset files, if they don't exist show SupportPal 404 error page.
    location ~* \.(css|gif|ico|je?pg|js|png|swf|txt|eot|ttf|woff|woff2|svg|map)$ {
        try_files $uri $uri/ @backend;
    }

    # Allow direct access to resources/assets files, if they don't exist show SupportPal 404 error page.
    location resources/assets/ {
        try_files $uri $uri/ @backend;
    }

    # All SupportPal requests must be sent through index.php.
    location @backend {
        rewrite ^(.*)$ /index.php last;
    }

    location ~ \.php($|/) {
        include snippets/fastcgi-php.conf;

        # With php-fpm:
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }
}

IIS

On IIS, please create a web.config file in the root of your installation directory with the below contents:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".woff" />
            <remove fileExtension=".woff2" />
            <remove fileExtension=".json" />
            <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
        </staticContent>
        <rewrite>
            <rules>
                <rule name="Add trailing slash to base" stopProcessing="true">
                    <match url="^$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{URL}" pattern="[^\/]$" />
                    </conditions>
                    <action type="Redirect" url="<supportpal_base_url>/" />
                </rule>
                <rule name="Remove index.php" stopProcessing="true">
                    <match url="^index.php/?(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_METHOD}" pattern="GET" />
                        <add input="{URL}" pattern="^.*/index\.php" />
                    </conditions>
                    <action type="Redirect" redirectType="Permanent" url="<supportpal_base_url>/{R:1}" appendQueryString="true" />
                </rule>
                <rule name="Allow assets" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
                        <add input="{URL}" pattern="(resources/assets/|\.(css|gif|ico|je?pg|js|png|swf|txt|eot|ttf|woff|woff2|svg|map)$)" />
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="Rewrite all else to index.php" stopProcessing="true">
                    <match url="^" ignoreCase="false" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="fix content-type" preCondition="PHPRequest">
                    <match serverVariable="RESPONSE_CONTENT_TYPE" pattern="text/html; charset=UTF-8,([^\/]+\/.+$)" ignoreCase="true" />
                    <action type="Rewrite" value="{R:1}" />
                </rule>
                <preConditions>
                    <preCondition name="PHPRequest">
                        <add input="{REQUEST_URI}" pattern=".*\.php" />
                    </preCondition>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
        <handlers>
            <remove name="WebDAV" />
            <remove name="PHP-php" />
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
            <add name="PHP-php" path="*.php" verb="GET,HEAD,POST,PUT,DELETE" modules="FastCgiModule" scriptProcessor="<absolute_path_to_php_cgi.exe>" resourceType="Either" requireAccess="Script" />
        </handlers>
        <httpErrors errorMode="Detailed" />
        <modules>
            <remove name="WebDAVModule" />
        </modules>
    </system.webServer>
    <system.web>
        <authentication mode="Forms" />
    </system.web>
</configuration>

Rename the Admin Folder

From a security point of view, it is a good idea to change the default operator URL prefix from admin to something that only your staff know. The prefix can be updated in the operator General Settings area under Admin Folder.

Common Issues

For common issues please see our Frequently Asked Questions.