13 Apr 2019

HelpdeskZ Ticket System and newer PHP Versions

Wenn man Helpdeskz http://www.helpdeskz.com/ A free helpdesk software that works - HelpDeskZ is a free PHP based software which allows you to manage your site’s support with a web-based support ticket system. mit einer neueren PHP-Version ausführt, hier getestet mit 5.6.40, dann können unter anderem folgende Fehlermeldungen auftauchen:

  • Fehler mit Konstanten, die jetzt nicht mehr definiert sind
     Use of undefined constant DBARRAY_ASSOC - assumed 'DBARRAY_ASSOC' in helpdeskz/includes/classes/classMysqli.php on line 95
     Use of undefined constant DBARRAY_BOTH - assumed 'DBARRAY_BOTH' in helpdeskz/includes/global.php on line 43
     Use of undefined constant DBARRAY_NUM - assumed 'DBARRAY_NUM' in helpdeskz/includes/global.php on line 43
    

Und ähnliche. Dies kann man beheben, wenn man in der Datei includes/global.php oben folgendes einfügt:

//predifined SQL constants - this was changed in PHP versions - added by chrissie
define('MYSQL_BOTH',MYSQLI_BOTH);
define('MYSQL_NUM',MYSQLI_NUM);
define('MYSQL_ASSOC',MYSQLI_ASSOC);
define('DBARRAY_BOTH', 0);
define('DBARRAY_ASSOC', 1);
define('DBARRAY_NUM', 2);
  • Fehler mit MySQL-Query Es kann sein, dass der Administrator-Login nicht mehr funktioniert. Darüber erhält man zuerst keine Meldung, aber wenn man die Queries durchprobiert, direkt im Mysql, erhält man die Fehlermeldung.
mysql> SELECT COUNT(id) AS total, id, username, password, login, fullname, status FROM hdz_staff where username='Administrator' and password='d2818thisisnottherealhasH2e6062aa';
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'admin_helpdeskz.hdz_staff.id'; this is incompatible with sql_mode=only_full_group_b
This will disable ONLY_FULL_GROUP_BY for ALL users

Hier wurde wohl irgendwas an den PHP-Settings geändert. Mann kann das beheben, wenn man MySQL unkonfiguriert. Dazu in die Datei /etc/mysql/my.cnf am Schluss folgendes eintragen:

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Mysql neu starten, funktioniert.

Das ist natürlich kein wirklicher Fix, man muss den ungünstig programmierten Query in controllers/staff/login_action.php in Zeile 30 ändert und z. B. auf zwei aufteilt.

Dies stelle ich euch dann vor, wenn ich auch eine vollkommen PHP-7-kompatible Version erstellt habe. Der Originalcode wird wohl nicht mehr gewartet.