Upgrade from 3.2.1 to later versions in Windows

From pmusers
Jump to: navigation, search

ProcessMaker 3.2.2 and later requires PHP 5.6 and MySQL 5.6, but ProcessMaker 3.2.1 and earlier were often installed with PHP 5.5 and MySQL 5.5. Upgrading to version 3.2.2 and later means that all three programs have to be upgraded at the same time.

This page explains how to upgrade ProcessMaker from version 3.2.1 (and earlier) to version 3.2.2 (and later), while also upgrading PHP from 5.5 to 5.6 and MySQL from 5.5 to 5.6 in Windows.


Tested in: ProcessMaker 3.2.1 Community, manual install in Windows Server 2012 R2 with PHP 5.5.38 (thread-safe, VC11), MySQL 55.5.62 & Apache 2.4.37 (all 64bit software). Upgraded to: ProcessMaker 3.3.0 Community, PHP 5.6.38 (thread-safe, VC11) & MySQL 5.6.42.


Make a backup

Make a backup copy of MySQL's database, just in case it is necessary to rollback if something goes wrong.

Open the Command Prompt in the Windows server where ProcessMaker is installed.

Hint: Click on WindowsHomeIcon.png (HOME) and enter "cmd" to find the Command Prompt.

First, stop the Apache server, so that the MySQL database won't get any new traffic, which might change the contents of the database in the middle of the backup. In the Command Prompt, enter the command:

net stop Apache2.4

Hint: If your Apache service uses a different name, then it can be found with the command:

net start

Then, change to MySQL's bin directory. For example:

cd "C:\Program Files\MySQL\MySQL 5.5.38\bin"

Then, use the mysqldump --all-databases > backup.sql command to make a backup of all the databases in MySQL to a file. For example:

mysqldump -u root -h localhost -p --all-databases > C:\Users\Administrator\mysql_backup.sql

Then, stop the MySQL service:

net stop MySQL

Finally, remove the MySQL service:

sc delete MySQL

Just to be safe, use robocopy to make a backup of all the MySQL, PHP and ProcessMaker files. For example:

robocopy C:\opt\processmaker C:\Users\Administrator\pm_backup /E /copyall
robocopy C:\php C:\Users\Administrator\php_backup /E /copyall
robocopy "C:\Program Files\MySQL" C:\Users\Administrator\mysql_backup /E /copyall

Upgrade MySQL from 5.5 to 5.6

After making a backup of MySQL and stopping its service as explained above, then upgrade MySQL to version 5.6. Go to https://dev.mysql.com/downloads/mysql/ and download the ZIP file for the latest version of MySQL 5.6 (such as mysql-5.6.42-winx64.zip).

  • Unzip the ZIP archive in some location other than your current MySQL installation (such as C:Users\Administrator\mysql).
  • Delete its data directory.

Example: deltree C:\Users\Administrator\mysql\mysql-5.6.42-winx64\data

  • Copy the data directory from the current MySQL installation to the new version of MySQL.

Example: xcopy "C:\Program Files\MySQL\MySQL 5.5.62\data" C:\Users\Administrator\mysql\mysql-5.6.42-winx64 /O /E /H /K

  • Delete the current MySQL installation.

Example: deltree "C:\Program Files\MySQL\MySQL 5.5.62"

  • Move the unzipped new version to the location of the just-removed installation.

Example: robocopy /move /e C:Users\Administrator\mysql\mysql-5.6.42-winx64 C:\Program Files\MySQL\"

Then, rename the C:Users\Administrator\mysql\mysql-5.6.42-winx64\my-default.ini file to my.ini and edit it for your system. Make sure to disable STRICT_MODE. Change from:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

To:

sql_mode=""

Note: Search for a line that contains STRICT_ALL_TABLES mode, and then disable it. In general remove all the lines with STRICT_TRANS_TABLES, STRICT_ALL_TABLES, and other SQL modes that may be valid in the specific MySQL configuration because they enable the STRICT mode.

Then, add the new location of the MySQL's bin directory to Window's Path system variable. Go to HOME > Control Panel > System and Security > System (or go to HOME and enter "system" in the search bar). In the "System" window, click on the Advanced System Settings link. In the "System Properties" dialog box that opens, click on Environment Variables. In the next dialog box that opens, scroll down under "System Variables" to find the Path variable in the list and edit it to add MySQL's bin directory to the end. For example, change it from:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\php;C:\Apache24\bin

To:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\php;C:\Apache24\bin;C:\Program Files\MySQL\mysql-5.6.42-winx64\bin

ChangeWindowsPath.png

Then, use the mysqld--install command in the Command Prompt to install MySQL as a Windows Service. For example:

cd "C:\Program Files\MySQL\mysql-5.6.42-winx64\bin\"
mysqld –install

Note: If the following error message appears:

The program can’t start because MSVCR100.dll is missing from your computer. 
Try reinstalling the program to fix this problem.

Then, install Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update to get the correct DLL file. Go to:
https://www.microsoft.com/en-us/download/confirmation.aspx?id=26999

And click on the Download button to get the vcredist_x86.exe file and install it.

Then, start MySQL as a service:

net start MySQL

Then, change to MySQL's bin directory and upgrade MySQL. For example:

cd "C:\Program Files\MySQL\mysql-5.6.42-winx64\bin\"
mysql_upgrade -uroot -p

Note: If you see an error like the following when trying to login to ProcessMaker:

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'wf_5becc8a42aa99'@'localhost' (using password: YES) 
in C:\opt\processmaker\thirdparty\creole\drivers\mysqli\MySQLiConnection.php on line 80

Then, MySQL can’t read its mysql.user table. In the command line, change to MySQL’s bin directory and then enter the following command:

mysql_upgrade --force -uroot -p

MySQL should list that one of the upgraded tables is "mysql.user" and its status is “OK”.

Upgrade PHP from 5.5 to 5.6

Go to http://windows.php.net/download/ and download the ZIP file for the latest version of PHP 5.6 which is VC11 and Thread Safe, such as php-5.6.38-Win32-VC11-x64.zip

Then, delete the files in the PHP 5.5 installation and unzip the PHP 5.6 files in their same location.

Then, rename the php.ini-development file as php.ini. For example:

rename C:\php\php.ini-development C:\php\php.ini

Then, edit the php.ini file and make sure that it has the following settings:

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

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

extension=php_curl.dll
extension=php_fileinfo.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 in the php.ini.

Then, copy the following files located at C:\php and paste them in the C:\Windows\system32\ and C:\Windows\SysWOW64 folders:

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

(If these files already exist, then overwrite them.)

Finally, restart Apache (or reboot the server) for the new PHP configuration to take effect:

net stop Apache2.4
net start Apache2.4

Then, follow the normal procedure to upgrade the ProcessMaker source code to version 3.2.2 or later.