PHP Compatibility - openises/tickets GitHub Wiki

PHP Compatibility

This page documents PHP compatibility for the TicketsCAD v3.44 Legacy release, which is the current stable version available for download.

TicketsCAD 3.44.1+ supports PHP 7.0 through 8.4+ via a built-in compatibility layer.

Verified Test Matrix (v3.44.2)

Tested on April 2, 2026 against MariaDB 10.11 using automated Docker test suite:

PHP Version Build HTTP Tables Admin Compat Passwords XSS Safe Fatals Result
8.4.19 OK 200 110 OK OK 3/3 Yes 0 PASS
8.3.30 OK 200 110 OK OK 3/3 Yes 0 PASS
8.2.30 OK 200 110 OK OK 3/3 Yes 0 PASS
8.1.33 OK 200 110 OK OK 3/3 Yes 0 PASS
8.0.30 OK 200 110 OK OK 3/3 Yes 0 PASS
7.4 N/A Docker build fails (Buster archived)

PHP 7.4 works on existing installations (XAMPP, shared hosting) but cannot be tested via Docker because Debian Buster's apt repositories were archived in 2024. The compat layer polyfills all necessary functions.

Supported Versions

PHP Version Status Notes
8.4 Recommended Current release, fully tested
8.3 Supported Fully tested
8.2 Supported Default in Docker image
8.1 Supported strftime() deprecation suppressed
8.0 Supported each() and create_function() polyfilled
7.4 Legacy End of life, works on existing installs
7.0–7.3 Best effort May work, not actively tested

Compatibility Layer

The file incs/compat.inc.php automatically polyfills functions removed in newer PHP versions:

Function Removed In Polyfill
utf8_encode() / utf8_decode() PHP 8.2 mb_convert_encoding() fallback
each() PHP 8.0 Manual array iteration
create_function() PHP 8.0 eval() wrapper
FILTER_SANITIZE_STRING PHP 8.1 Maps to FILTER_DEFAULT
str_contains() / str_starts_with() / str_ends_with() Added in 8.0 Backported for PHP 7.x

Deprecation warnings from strftime(), null parameter passing, and ${var} interpolation are suppressed.

Recommended Version

PHP 8.2 is the recommended version. It's the default in the Docker image and receives active security updates.

Checking Your PHP Version

php -v

Or visit http://your-server/tickets/tools/diagnose.php for a full compatibility check.