System Requirements

The system requirements are checked when you run the installer. You'll need:

  • Nginx or Apache web server capable of running PHP scripts. mod_rewrite needs to be enabled under Apache.
  • HTTP methods (POST, GET, PUT, DELETE) have to be allowed and enabled.
  • PHP 7.1 or newer, with the following extensions: MySQLi, PCRE, tokenizer, CType, session, JSON, XML, DOM, phar, OpenSSL, GD, mbstring, cURL, zlib, IMAP and fileinfo. cURL and IMAP extensions need to be compiled with SSL support. Both PHP serving web pages, as well as command line PHP need to meet these requirements.
  • MySQL 5.7.8 or newer, or MariaDB 10.2.7 or newer, with InnoDB and UTF8MB4 support. One empty database is required.
  • ElasticSearch 6.0 or newer and Java are required for search - but ActiveCollab can still work without them.

We recommend using the latest stable PHP and MySQL. To speed things up, use opcode and memory caching.

Opcode Cache Compatibility

ActiveCollab doesn't work under eAccelerator or XCache. Disable them before installing ActiveCollab and use OPcache instead.

ActiveCollab is a PHP application and can run on any OS/server which meets the requirements. While it runs fine on Windows, it feels most at home at Unix flavor operating systems, mostly Linux.

ActiveCollab Probe #

Fastest way to check if your environment can run ActiveCollab is ActiveCollab Probe. This script runs similar set of tests that ActiveCollab installer does, and can point issues with compatibility early not, prior to upload of the whole ActiveCollab:

You can learn more about ActiveCollab Probe on project's GitHub page.

Folder Permissions #

Make sure the following folders are writable by the web server:

  • cache/
  • compile/
  • config/
  • logs/
  • thumbnails/
  • upload/
  • work/
  • activecollab/
  • public/assets/

Please note that you should use the -R option when setting the permissions to set them recursively.

PHP #

You will need CLI PHP if you want to send emails or use search. You can check this on your server with the php -v command, and the output should be something like this:

1
PHP 7.1.10-1+0~20170929170818.9+stretch~1.gbp501135 (cli) (built: Sep 29 2017 17:08:20) ( NTS )

Also, make sure it says “cli”, instead of “cgi”.

MySQL #

You can check the MySQL version with the following command:

1
mysql --version

The MySQL user needs permissions for creating TRIGGERs.

The thread_stack will have to be set to 256K. On many servers it is set to 192K by default. This is usually set in the my.cnf file.

Rewriting #

URL Rewriting is required by ActiveCollab. You can check if it's enabled by opening http://example.com/verify-existence in your browser. You should see:

1
{"ok":false}

On Apache servers this should work out of the box if mod_rewrite is enabled and .htaccess files are allowed. For other servers, see the instructions below.

nginx #

This is a template for the nginx configuration file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
server {
  listen *:80;
  server_name projects.example.org;
  access_log /var/log/nginx/activecollab.access.log;
  error_log /var/log/nginx/activecollab.error.log;

  set $root_path /var/www/html/activecollab/public;
  root $root_path;

  index index.html index.htm index.php router.php;
  charset utf-8;
  if (!-e $request_filename) {
    rewrite ^/assets/(.*)$ /assets/$1 last;
    rewrite ^/avatars/(.*)$ /avatars/$1 last;
    rewrite ^/wallpapers/(.*)$ /wallpapers/$1 last;
    rewrite ^/verify-existence$ /verify.php last;
    rewrite ^/proxy.php$ /proxy.php last;
    rewrite ^/api/v([0-9]*)/(.*)$ /api.php?path_info=$2&api_version=$1 last;
    rewrite ^$ /router.php last;
    rewrite ^(.*) /router.php?path_info=$1 last;
  }

  location / {
    rewrite ^/verify-existence$ /verify.php last;
    rewrite ^/proxy.php$ /proxy.php last;
    rewrite ^/api/v([0-9]*)/(.*)$ /api.php?path_info=$2&api_version=$1 last;
    rewrite ^/$ /router.php last;

    try_files $uri $uri/ /router.php?path_info=$uri&$args;
  }

  location ~ ^/(assets|avatars|wallpapers)/ {
    root $root_path;
  }

  location ~* \.php$ {
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}

After editing this file, reload the configuration by running nginx -s reload.

memcached #

By default, ActiveCollab caches data in /cache directory. While faster than no cache at all, it is still not optimal cache mechanism. Caching into memory is recommended, and ActiveCollab ships with option to cache using memcached.

Required Extensions

ActiveCollab requires that Memcached or Memcache PHP extension is installed. To check if one or both are available, run this command:

1
php -m | grep memcache

This command will output the names of these extensions if any of the two is present, and empty otput if they are not available. You should also check phpinfo() page that runs on the same server where ActiveCollab runs to check if they are available in PHP that serves web requests as well.

To configure ActiveCollab to use memcached, open config/config.php and add these lines prior to require calls:

1
2
const CACHE_BACKEND = 'memcached';
const CACHE_MEMCACHED_SERVERS = '127.0.0.1:11211';

Replace 127.0.0.1:11211 value with your actual memcached server address. If you are using a cluster of mecached servers, you can specify a comma separated list of servers.

System Requirements of Historical Releases #

This table shows currently supported historical releases and their system requirements:

Version PHP MySQL ElasticSearch
ActiveCollab 4.2 5.4 - 5.6.x 5.0 - 5.6.x -
ActiveCollab 5.0 - 5.5 5.4 - 7.0.x 5.5.3 - 5.6.x 1.7.x
ActiveCollab 5.6 - 5.13 5.6 - 7.1.x 5.5.3 - 5.6.x 1.7.x
ActiveCollab 5.14 7.1+ 5.7.8 - 5.7.x 6.0+

Historical releases are available for download from Download Older Releases dropdown on Licenses page of your my.activecollab.com profile: