PHP and MySQL Upgrade

PHP and MySQL upgrades can break a previously working ActiveCollab because of version incompatibility, as well as extension and runtime configuration changes.

Prior to upgrading PHP and MySQL, check if your version of ActiveCollab supports it. Check out compatibility table on System Requirements page for details.

Checking Web Environment #

Prior and after doing and upgrade, run probe.php script to confirm that web environment is working correctly:

Checking Command Line Environment #

After the upgrade, you should run command line environment check, to confirm that your command line environment was correctly upgraded. Using Terminal or command prompt application, go to directory where ActiveCollab is installed on your server and run:

1
php tasks/activecollab-cli.php check_environment

If this tool reports any errors, please correct them.

Email Replies are Not Imported #

This is most probably due to a missing IMAP extension. To check if IMAP extension is installed, please run this command:

1
php -m | grep imap

If IMAP extension is found, it will be listed. If not, this command will just output a blank line.

Note

It is important to use command line to check if IMAP extension is installed, not phpinfo(). Incoming mail is always imported from cron jobs, and they run in command line environment. phpinfo() displays the configuration of your web environment. It can lead you to an incorrect conclusions, because web and command line environment are different and can be differently configured.

MySQLi is Broken After PHP Upgrade #

After PHP upgrade you may experience a broken ActiveCollab, and find this error in server responses or in log files: Call to a member function execute() on null in .../activecollab/5.X.Y/angie/classes/database/DB.class.php.

What this error means is that ActiveCollab can't connect to the database, despite having correct connection parameters in config/config.php.

This is usually due to MySQLi extension configuration, which may be disabled or reset to default configuration after you upgraded PHP.

Check if MySQLi is Installed #

First step is to check if MySQLi extension is installed. You can do that by visiting a phpinfo() page that you made, or by running this command:

1
php -m | grep mysqli

If MySQLi extension is found, it will be listed. If not, this command will just output a blank line. You can yse php -m to get the list of all enabled extensions.

Check MySQLi Runtime Configuration #

Next step is to check MySQLi runtime configuration. You can get all settings on phpinfo() page, or by running this command:

1
php -i | grep mysqli

It will list all lines from PHP runtime configuration that have mention of mysqli. Check if all settings are OK. Pay close attention of default socket option, because it can result in functional MySQLi extension that can't connect to MySQL server. Consult the PHP and MySQL installation guide that you used to set up the environment to see how to correctly set up the mysql.sock.

MySQL Upgrade #

If you did the full platform refresh, and upgraded both PHP and MySQL in the same go, make sure that all MySQL upgrade steps are completed.

Check the upgrade guide that you followed through, and verify that all steps have been completed. Information about mysql_upgrade command should be part of that guide. If it's not, you can find more information in the official documentation. mysql_upgrade command will check all database tables, and make sure that they are upgraded. It will also refresh system tables that are needed for normal operation of MySQL server.