Unofficial documentation how to do interesting things and work around problems in ProcessMaker

Moderator: amosbatto

Forum rules: Unofficial documentation for features which have not been tested by Quality Assurance or may change in future versions of ProcessMaker
#791753
ProcessMaker won't be able to upgrade to PM 3.2 or later if the MySQL password contains + (plus sign) or %## (percent sign followed by two numbers), because a code change added in PM 3.2 replaces these symbols in the password. These passwords are found in the files processmaker/shared/sites/WORKSPACE/db.php and processmaker/shared/sites/WORKSPACE/databases.php.

When trying to run the php processmaker upgrade or php processmaker database-upgrade command, the following error message will appear if the passwords contain these symbols:

Errors upgrading workspace workflow: [wrapped: connect failed [Native Error: Access denied for user 'database-name'@'host' (using password: YES)] [User Info: database-user]]

For example:
Code: Select all
# cd /opt/processmaker
# php processmaker upgrade
Checking files integrity...
checksum.txt not found, integrity check is not possible
Integrity check failed, do you want to continue the upgrade? [Y/n] y
Clearing cache...
Upgrading workspaces (1/1): workflow
> Updating database...
Errors upgrading workspace workflow:  [wrapped: connect failed [Native Error: Access denied for user 'wf_workflow'@'localhost' (using password: YES)] [User Info: wf_workflow]]

Safe upgrade for files cached by the browser

Upgrade finished but there were errors upgrading workspaces.
Please check the log above to correct any issues.
To fix this problem, edit the processmaker/gulliver/thirdparty/creole/Creole.php file with a plain text editor (such as nano, gedit or Notepad++) and change lines 315-317 from:
Code: Select all
        if (!is_null($dsn)) {
            $info['pass'] = urldecode($info['pass']);
        }
To:
Code: Select all
        /* comment out to fix bug with urldecode() replacing characters in password:
        if (!is_null($dsn)) {
            $info['pass'] = urldecode($info['pass']);
        }
        */
Then, it should be possible to use the php processmaker upgrade or php processmaker database-upgrade command and continue with the rest of the upgrade.
#822001
Hello Amos,

Would this solution work also for PM 3.3.0?
I am trying to upgrade the ProcessMaker from 3-1-community to 3.3.0 and I have the same error.
However, I cannot find these lines in the Creole.php file.

Best Regards,
fibo2358
Calculate hours of day/week

Thank you Amos, The four other variables are for[…]

timing control

I suggest that you file a bug report about it at[…]

Hello Amos, Would this solution work also for PM […]

Hi amosbatto! When I send a request from ajax to[…]