Skip to content

Upgrading PHP

Ed Mozley edited this page Oct 25, 2026 · 2 revisions

Upgrading PHP

FreeITSM needs PHP 8.1 or newer. PHP 8.3 or 8.4 is recommended.

If you have arrived here from a page that said "FreeITSM needs PHP 8.1 or newer. This server is running PHP 7.4…", this is the fix. Nothing in FreeITSM or its database needs changing. Upgrade PHP, restart the web server, and reload the page.


Why 8.1

PHP 7.4 has had no security updates since November 2022, and 8.0 none since November 2023. FreeITSM's code had started using PHP 8.0 and 8.1 features in 2026, so in practice it already needed 8.1. 4.0.0 made that official, and gave older servers this message instead of a blank page.

Two numbers, two jobs:

  • 8.1 is the oldest PHP FreeITSM runs on.
  • 8.3 or 8.4 is what you should install. 8.1 itself stopped getting upstream security fixes at the end of 2025. Ubuntu 22.04 still patches its own 8.1, but anything newer is better.

Check what you have

  • Setup page: open /setup/ - the PHP version row shows it.
  • Command line: php -v (on WAMP/XAMPP the web server can use a different PHP from the command line - the setup page is the one that counts).

How to upgrade

Docker

Nothing to do. The official image runs PHP 8.4.

Ubuntu / Debian

Release Its own PHP
Ubuntu 24.04 8.3 βœ… fine
Ubuntu 22.04 8.1 βœ… runs - 8.3 recommended
Ubuntu 20.04 7.4 ❌ too old
Debian 13 8.4 βœ… fine
Debian 12 8.2 βœ… fine
Debian 11 7.4 ❌ too old

On a release whose own PHP is too old, the usual route is OndΕ™ej SurΓ½'s packages (ppa:ondrej/php on Ubuntu, packages.sury.org on Debian):

sudo add-apt-repository ppa:ondrej/php     # Ubuntu
sudo apt update
sudo apt install php8.3 php8.3-mysql php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-ldap

Then point the web server at it - for Apache with mod_php, sudo a2dismod php7.4 && sudo a2enmod php8.3; for PHP-FPM, switch the socket in your site config to php8.3-fpm - and restart it. php8.3-ldap, -zip and -intl are only needed for the features in Installation, but are worth having.

Upgrading the whole operating system to a release whose own PHP is new enough is the cleaner long-term answer, and Ubuntu 20.04 and Debian 11 are out of standard support anyway.

RHEL, Rocky, Alma

Switch the PHP module stream (dnf module reset php && dnf module enable php:8.2 && dnf install php), or use Remi's repository for 8.3/8.4.

Shared hosting / cPanel

Usually a dropdown: MultiPHP Manager (or your host's PHP version page) β†’ choose 8.3 or 8.4 for the site. Then check MultiPHP INI Editor or PHP extensions has pdo_mysql, curl, mbstring and openssl ticked for the new version.

Windows - WAMP, XAMPP

  • WAMP: left-click the tray icon β†’ PHP β†’ Version β†’ pick 8.3 or 8.4. If none is listed, download the WampServer add-on for it first. Then enable the extensions you need on the new version (PHP β†’ PHP extensions).
  • XAMPP: XAMPP bundles one PHP per release, so install a current XAMPP (8.2 or later) alongside, then move your htdocs folder and the db_config.php it points to.

Remember that each PHP version has its own php.ini - extensions and settings you enabled on the old one need enabling again.

After upgrading

Reload /setup/. The PHP version row should be green, and the extension rows tell you if anything needs enabling on the new version.

For developers

The check is includes/php_version_guard.php, loaded first by includes/ssl.php and includes/functions.php. It must stay readable by old PHP, and so must every file the web server or cron runs directly - PHP 8 syntax belongs in an includes/ folder. CI checks both: see Raising the PHP floor.

FreeITSM

Getting Started

Modules

Multi-tenancy (planned)

Blue sky thinking

Bugs resolved

Links

Clone this wiki locally