This guide provides instructions on how to manually install and configure ProcessMaker 3 in a Windows platform.

Before installing ProcessMaker, check the Installation Requirements of ProcessMaker 3.0 and 3.1 to see whether your server meets the necessary hardware and software requirements and do not forget to read the following recommendations:

Recommendations

  • Check our Supported Stacks page for ProcessMaker version 3.0 or 3.1, and Compatible Browsers List page for version 3.0 or 3.1 depending on your ProcessMaker version.
  • If using Internet Explorer 8, 9 or 10, enter the URL like: http://localhost:8080/.
    Do not forget to add the http:// protocol so that the browser redirects the page to ProcessMaker.
  • If working with Internet Explorer 11, please read the Internet Explorer Compatibility page.
  • ProcessMaker is not compatible with MySQL STRICT mode, which is enabled by default in MySQL 5.7. Read the Turning Off MySQL STRICT Mode section to learn how to disable it. Since MySQL 5.7 is NOT part of any official ProcessMaker stack, the application has not been tested entirely in this version of MySQL. Therefore, ProcessMaker may not run correctly even if STRICT mode is disabled.

Manual Installation

Note: If installing ProcessMaker 3.0.1.8 - 3.1.2 on Windows Server 2012 R2, please follow the instructions of our supported Stack 210 to install Apache, MySQL and PHP. Then, continue with the step Step 4: Download & Extract ProcessMaker and next steps of this guide.

Requirements

  • .NET Framework 4.

Step 1: Installing Apache Server

Download Apache 2.4 binary file VC11 (available in x64 or x86) from this Apache Lounge page.

The Apache binary file must be compiled with VC++ redistributable compiler. In the case of Apache 2.4 VC11 must be compiled with C++ Redistributable Visual Studio 2012.
For this, go to the Visual C++ Redistributable for Visual Studio 2012 page.

Select the language of the Operating System and click on the Download button.

Select the vcredist_x64 or vcredist_x86 file (depending on your system) and click on the Next button at the right-corner of the dialog screen. The download process of the file will begin automatically.

Once downloaded, install the "vcredist_xXX.exe" file downloaded as administrator.

Then, extract the Apache binary file (in the case of x64 is named "httpd-2.4.20-win64-VC11.zip") into the disk C:\. There is an Apache24 folder inside it. Cut the Apache24 folder and paste it in the C:\.

Take into consideration that decompressing the binary file in another location will need extra configuration. Because the default ServerRoot path in Apache's conf files is: C:\Apache24.

Edit the Apache file httpd.conf located at C:\Apache24\conf\httpd.conf

Uncomment the following modules (remove the # symbol at the beginning of each line):

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule filter_module modules/mod_filter.so

By default, the httpd.conf file is configured to listens to all addresses on the machine on port 80. However, it may need to be specified to listen on specific ports, or only on selected addresses depending on your server.

For example:

To make the server accept connections on both port 80 and port 8000, on all interfaces.

Listen 80 Listen 8000

To make the server accept connections on port 80 for one interface, and port 8000 on another, use:

Listen 192.0.2.1:80 Listen 192.0.2.5:8000

Finally, add the following lines at the end of the httpd.conf file. This will include the php module.

LoadModule php5_module "C:\php\php5apache2_4.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:\php\php.ini"

Save the changes and close the file.

Step 2: Installing PHP

Restrictions about PHP

Please take notice of the following PHP restrictions:

  • ProcessMaker does NOT support PHP 7.
  • In some hosted servers the get_headers and apache_request_headers functions may be disabled, this will cause ProcessMaker's API doesn't work properly since REstler library uses those functions. Make sure to have those functions enabled.
  • Windows Operating Systems x86 only supports 32-bits timestamps. The valid range of a 32-bits timestamp is typically from Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC, using out of range values may cause issues. For more information about this problem, go here.
  • Experimental x64 builds of PHP 5 in Windows x86 do not provide 64-bit integer or large file support.
  • Prior to PHP 5.1.0, not all platforms support negative timestamps, therefore your date range may be limited to no earlier than the Unix epoch. This means that e.g. dates prior to Jan 1, 1970 will not work on Windows, some Linux distributions, and a few other operating systems.
For Windows Operating Systems x64 with 64-bit versions of PHP, the valid range of a timestamp is effectively infinite, as 64 bits can represent approximately 293 billion years in either direction.

Download & Configuring PHP

Go to PHP Download page, scroll down and search for PHP 5.5.37.zip installer (x86 or x64 bits version depending on your system) and download always the "Thread Safe" version. PHP has to be thread-safe to be able to work correctly with Apache.

First, create the "php" folder in disk C:\ and decompress the php-5.5.37-Win32-VC11-x64 file inside.

Then, rename php.ini-production to php.ini and open it with your favorite editor.

Search for the following lines and edit them using the following configurations:

short_open_tag = On memory_limit = 512M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off post_max_size = 24M upload_max_filesize = 24M extension_dir = "C:\php\ext"

Next, uncomment the following extensions (remove the ; symbol at the beginning of each line):

extension=php_curl.dll
extension=php_gd2.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_soap.dll

Save the changes and close the file.

Finally, copy the following files located at C:\php and paste it to C:\Windows\system32\ and C:\Windows\SysWOW64 folders:

  • libsasl.dll
  • ssleay32.dll
  • libeay32.dll
  • libssh2.dll

Step 3: Installing MySQL Server

Warning: ProcessMaker is not compatible with MySQL STRICT mode, which is enabled by default in MySQL 5.7. Read the Turning Off MySQL STRICT Mode section to learn how to disable it. Since MySQL 5.7 is NOT part of any official ProcessMaker stack, the application has not been tested entirely in this version of MySQL. Therefore, ProcessMaker may not run correctly even if STRICT mode is disabled.

Download the MySQL 5.5.X installer from the MySQL official website..

After clicking the version of your system, the next page will ask for your registration but this can be bypassed by clicking “» No thanks, just take me to the downloads” button below the register or login section.

After the installer has being downloaded, double-click on it to start the wizard installation.

In the next dialog window, accept the License Agreement and click on "Next".

In the Setup Type selection dialog, select Complete and continue with the installation.

The wizard will be ready to install MySQL Server, click on Install to proceed with the installation.

Once installed, check the box to configure MySQL with the Instance Configuration Wizard and click on Finish.

The Server Instance Configuration Wizard will help automate the process of configuring the server. Click on Next to begin.

There are two configuration types available: Detailed Configuration and Standard Configuration. Select the Detailed Configuration option to configure all possible settings then click on the Next button.

The Server Type dialog will display. Between the three different server types available to choose from, select the Server Machine since this option allows MySQL server to run alongside other server applications such as FTP, email, and Web servers. The MySQL server will be configured to use a moderate portion of the system resources.

Next, in the Database Usage dialog select the Transactional Database Only option. This option determines whether the InnoDB storage engine is available and what percentage of the server resources are available to InnoDB.

Some servers need to locate the InnoDB tablespace files in a different location than the MySQL server data directory. If this is the case, in the next dialog place the tablespace files in a separate location.

In the next dialog, to prevent the server from running out of resources, choose the option that suits your preferences to limit the number of concurrent connections that can be established.

Then, enable or disable TCP/IP networking and configure the port number that will be used to connect to the MySQL server. Port 3306 is used by default. If the port number you choose is in use, you are prompted to confirm your choice of port number.
Do not forget to uncheck the box next to the Strict Mode option, ProcessMaker does NOT support MYSQL strict mode.

Next, select the option Best Support For Multilingualism to support utf8 as the default server character set. This is a Unicode character set that can store characters from many different languages.

Check both boxes to set the MySQL server as a Windows service and click on Next. When installed this way, the MySQL server can be started automatically during system startup, and even restarted automatically by Windows in the event of a service failure.

In the next dialog window, set a root password for the MySQL server installation.

Warning: ProcessMaker does NOT support special characters (such as: @ # $ % ^ & ( /) in the root password. For more information, please read this section.

Check the box next to the Enable root access from remote machines option to permit root logins from across the network.

Finally, make sure everything is in order and start the configuration process by clicking the Execute button.

After the MySQL Server Instance Configuration Wizard has completed its tasks, it will display a summary. Click the Finish button to exit the MySQL Server Configuration Wizard.

Step 4: Download & Extract ProcessMaker

Download the most recent ProcessMaker tar.gz file from ProcessMaker's SourceForge page. ProcessMaker versions are labeled according to its build number. To download the latest version of ProcessMaker, look for the highest version number.

At the moment, the latest version is ProcessMaker 3.1.2

Once downloaded, extract it and move the extracted folder to: C:/opt and keep note of this location.

The next step is to add the ProcessMaker location to Apache VirtualHost configuration. For this, copy the content of the "ProcessMaker VirtualHost Sample Configuration" file located at c:/opt/processmaker/pmos.conf.

Step 5: Apache Configuration

Open the httpd-vhosts.conf located at: c:/Apache24/conf/extra/httpd-vhosts.conf and paste the VirtualHost sample at the bottom of the httpd-vhosts.conf file.
Edit it to fit your Apache environment:
VirtualHost in Apache 2.2.
VirtualHost in Apache 2.4.

VirtualHost in Apache 2.2

If using Apache 2.2, then use the following VirtualHost configuration. In the httpd-vhosts.conf file, replace your_ip_address and your_processmaker_domain with the IP address and domain name used by your ProcessMaker server:

# Please change the IP address with your server IP address and # the ServerName with your own subdomains. NameVirtualHost your_ip_address #processmaker virtual host <VirtualHost your_ip_address > ServerName "your_processmaker_domain" DocumentRoot C:\opt\processmaker\workflow\public_html <Directory "C:\opt\processmaker\workflow\public_html"> AddDefaultCharset UTF-8 AllowOverRide All Options FollowSymlinks Order allow,deny Allow from all RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /app.php [QSA,L] ExpiresActive On ExpiresDefault "access plus 1 day" ExpiresByType image/gif "access plus 1 day" ExpiresByType image/png "access plus 1 day" ExpiresByType image/jpg "access plus 1 day" ExpiresByType text/css "access plus 1 day" ExpiresByType text/javascript "access plus 1 day" #Deflate filter is optional. It reduces download size, but adds slightly more CPU processing: AddOutputFilterByType DEFLATE text/html </Directory> </VirtualHost>

Replace your_ip_address with the IP number or domain name of the server running ProcessMaker. If only planning on running and accessing ProcessMaker on your local machine, then use the IP address "127.0.0.1". If using ProcessMaker on a machine whose IP address might change (such as a machine whose IP address is assigned with DHCP), then use "*", which represents any IP address. If not using the standard port 80, then it is necessary to also specify the port number. For more information, see the Apache Virtual Hosts Documentation.

Example 1:

ProcessMaker is installed in the C:\opt\processmaker\ directory and is running on a server at the address 192.168.1.100:

NameVirtualHost 192.168.1.100 #processmaker virtual host <VirtualHost 192.168.1.100> ServerName "192.168.1.100" DocumentRoot C:\opt\processmaker\workflow\public_html ...

Example 2:

ProcessMaker is installed in the C:\users\fred\ directory on your local machine at port 8080 with an dynamic IP assigned by DHCP:

NameVirtualHost *:8080 Listen 8080 #processmaker virtual host <VirtualHost *:8080 > ServerName "*" DocumentRoot C:\users\fred\workflow\public_html ...

Example 3:

ProcessMaker is installed in the C:\opt\pm3.0.1.7 directory at the IP address 123.45.67.89 and the domains www.example.com and any variant of X.example.com:

NameVirtualHost 123.45.67.89 #processmaker virtual host <VirtualHost 123.45.67.89 > ServerName "www.example.com" ServerAlias "*.example.com" DocumentRoot C:\opt\pm3.0.1.7\processmaker\workflow\public_html ...

Note that www.example.com and *.example.com need to be defined in the server's DNS or c:\Windows\System32\Drivers\etc\hosts file for this example to work correctly.

VirtualHost in Apache 2.4

If using Apache 2.4, then use the following VirtualHost configuration. In the httpd-vhosts.conf file, replace your_ip_address and your_processmaker_domain with the IP address or domain name used by your ProcessMaker server:

#processmaker virtual host <VirtualHost your_ip_address > ServerName "your_processmaker_domain" DocumentRoot C:\opt\processmaker\workflow\public_html DirectoryIndex index.html index.php <Directory C:\opt\processmaker\workflow\public_html> Options Indexes FollowSymLinks MultiViews AddDefaultCharset UTF-8 AllowOverride All Require all granted ExpiresActive On <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*/(.*)$ app.php [QSA,L,NC] </IfModule> ExpiresActive On #Deflate filter is optional. It reduces download size, but adds slightly more CPU processing: AddOutputFilterByType DEFLATE text/html </Directory> </VirtualHost>

Replace your_ip_address with the IP number or domain name of the server running ProcessMaker. If only planning on running and accessing ProcessMaker on your local machine, then use the IP address "127.0.0.1". If using ProcessMaker on a machine whose IP address might change (such as a machine whose IP address is assigned with DHCP), then use *, which represents any IP address. If not using the standard port 80, then it is necessary to also specify the port number.

If your DNS or c:\Windows\System32\Drivers\etc\hosts has a defined domain for ProcessMaker, then use that domain for your_processmaker_domain. Otherwise, use the same IP address for your_processmaker_domain as was used for your_ip_address. For more information, see the Apache Virtual Hosts Documentation.

Example 1:

ProcessMaker is installed in the /opt/processmaker directory and is running on a server at the address 192.168.1.100:

#processmaker virtual host <VirtualHost 192.168.1.100> ServerName "192.168.1.100" DocumentRoot C:\opt\processmaker\workflow\public_html ...

Example 2:

ProcessMaker is installed in the /user/fred directory on your local machine at port 8080 with an dynamic IP assigned by DHCP:

Listen 8080 #processmaker virtual host <VirtualHost *:8080 > #don't include ServerName DocumentRoot C:\Users\fred\processmaker\workflow\public_html ...

Example 3:

ProcessMaker is installed in the /opt/pm3.0.1.7 directory at the IP address 123.45.67.89 and the domains www.example.com and any variant of X.example.com:

#processmaker virtual host <VirtualHost 123.45.67.89 > ServerName "www.example.com" ServerAlias "*.example.com" DocumentRoot C:\opt\pm3.0.1.7\processmaker\workflow\public_html ...

Note that www.example.com and *.example.com need to be defined in the server's DNS or c:\Windows\System32\Drivers\etc\hosts file for this example to work correctly.

Step 6: Setting up ProcessMaker

Once all ProcessMaker configurations were set up, open a web browser and enter the IP address (and port number if not using the default port 80) where ProcessMaker is installed. For instance, if ProcessMaker is installed at the address 192.168.10.100, then go to: http://192.168.10.100 or if it is installed locally at port 8080, go to: http://127.0.0.1:8080

Then, in the web browser use the Installation Wizard to complete the installation of ProcessMaker. The wizard should work on any type of computer, which is capable of running Apache, PHP and MySQL.

Pre-Installation Check

The first step in the installation wizard checks whether the server meets the requirements to install ProcessMaker:

This step checks the versions of PHP, MySQL and cURL and ensures that the necessary PHP modules are enabled and PHP memory_limit is at least 80MB. Requirement which are not met will be marked as No. Fix any of the missing requirements before continuing with the installation.

File Permissions

The second step of the installation wizard lists the paths where the directories where ProcessMaker stores its files and checks whether those directories have the correct file permissions:

If there is a problem accessing some files or directories, check the file permissions of the directories so that the Apache user running processmaker can access them.

It is possible to change the location of the shared directory, where files containing process and case data are stored. This directory by default is placed inside the ProcessMaker installation directory under shared, but it can be placed in another location or in an Network Address Translation (NAT) server. If not using the default location for the shared directory, make sure that it has the proper file permissions so that it can be accessed by ProcessMaker, but is restricted from normal users on the server who shouldn't have access to sensitive files. It is recommended to regularly backup the shared directory and MySQL files to prevent data loss.

ProcessMaker Open Source License

The third step in the Installation Wizard displays the ProcessMaker license.

Mark the option I agree and click on Next to continue the installation.

Database Configuration

The fourth step of the installation wizard configures how to connect to the MySQL database. Enter the name and password of an MySQL user, such as "root", who has permissions to set up new databases in MySQL. Then click on Test Connection to see whether that user can login to MySQL and setup the ProcessMaker databases.

If ProcessMaker can't connect to MySQL or can not login with the user's credentials or if the database exists, an error message will appear.

Edit the information about how to connect to the database and click on Test Connection again.

Workspace Configuration

The last step of the Installation Wizard configures the name and password of the Administrator user, which by default is named "admin".

Important! The “admin” user will be able to access to all the features and functionality in your ProcessMaker installation, such as: system configuration, processes creation and editing, user and group management, case management, and report and dashboard oversight among others. Thus, it is strongly recommended you take care to configure a difficult-to-guess password for this account. Take a look at this list of password dos and don’ts. You may also consider using a strong password generator like this one.

The ProcessMaker workspace and its database can also be configured.

The name of the workspace can be changed from the default, which is "workflow". It may be useful to set up separate workspaces for each department or division in an organization or for separate sets of processes.

By default the Installation wizard will create a new MySQL user and that user will be granted access to a new database named "wf_workflow" to store ProcessMaker data. To not create a new MySQL user, but rather use the existing MySQL user entered in Step 3, mark the option Use the current user as the database owner. To change the name of the database,

Then click on the Check workspace Configuration button to verify that the configuration is correct. The message "The configuration is correct." will be displayed and the Finish button will be enabled.

If there is some error with the configuration, the message "Not passed." will be displayed in the dialog.

In addition to that, for example, if a database of the same name already exists, an error message will be displayed at the bottom right corner.

In this case, mark the option Change database names and enter a different name for the database that will be created by ProcessMaker, or mark the option Delete Database if it exists:

When the configuration is correct, click on the Finish button to create the workspace database and configure the ProcessMaker files.

If there are no problems, the message "ProcessMaker was successfully installed" will be displayed.

If there was a problem creating the database an error message will be displayed. In this case, check the configuration of MySQL and its my.cnf file.

If there was a problem writing the ProcessMaker files, change the file permissions to the directories so Apache has access.

First Login

Once ProcessMaker has been successfully installed, the web browser will be redirected to the login page. The Get Started screen will appear:

To avoid seeing the Get Started screen on every subsequent login, mark the option Don't show me again and the screen will automatically be closed.

Then, enter the name and password of the Administrator user which by default is "admin", but a different username could have been configured in Step 4 of the Installation Wizard. Enter the name of the workspace which was configured in Step 4, which by default is named "workflow", Then click on Login to enter processmaker.

The login page can be configured. For more information see Login Settings.

Note: If a previous version of ProcessMaker was accessed by the web browser, it is recommended to clear the browse cache after installing ProcessMaker to clear any stored pages from previous versions of ProcessMaker.

Potential Problems

Disabling MySQL STRICT mode

MySQL can not use STRICT mode with ProcessMaker. If STRICT mode is enabled, then the following error message will appear when trying to login to ProcessMaker for the first time:

ERROR: User does not have rights on this page.

To check if MySQL is configured to use strict mode, open the file my.cnf with a plain text editor and look for the following line:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
To disable STRICT mode, change it to:
sql_mode=""

Then, restart MySQL or reboot for the new configuration to take effect. If ProcessMaker has already been installed, then you will need to delete the existing wf_workflow database in MySQL and reinstall. To do this, first login to MySQL as the root user from the command line: cd C:\MySQL installation directory\mysql\bin mysql -u root -p

Enter the root password for MySQL. Once in MySQL then drop the wf_workflow database (or whatever name it was given during installation). mysql> drop database wf_workflow; Query OK, 0 rows affected (0.59 sec) mysql> exit Bye

Then, redirect your web browser to your server's location and follow the steps to reinstall ProcessMaker.

MySQL Password with Special Characters

The following error is displayed during the ProcessMaker installation when the MySQL password contains a character that is not a letter or a number, like: @ # $ % ^ ( /.

Warning: array_pop() expects parameter 1 to be array, boolean given in /srv/processmaker/processmaker/gulliver/thirdparty/creole/ Creole.php on line 314

Please change/reset your MySQL password and try to install ProcessMaker again. This is a known issue that will be fixed in ProcessMaker 3.2.