PHP 8.3 auf Ubuntu 22.04 installieren

PHP 8.3 auf Ubuntu 22.04 installieren

Unter Ubuntu 22.04 ist für PHP die Version 8.1 standardmäßig mitgeliefert, was für die meisten Anwendungsfälle ist auch völlig ausreichend ist.
Neben einigen Performancevorteilen ist hauptsächlich die Supportunterstützung (https://www.php.net/supported-versions.php) von PHP 8.1 für mich entscheidend gewesen, das Update auf 8.3 auszuführen.


Folgende Schritte habe ich auf meinem System gemacht.
Erstmal ein Update machen:
$ sudo apt update && sudo apt -y upgrade

Installiere erstmal noch einige Pakete:
$ sudo apt install ca-certificates apt-transport-https software-properties-common

Nun wird das PHP-Repository von Ondrej hinzugefügt:
$ sudo add-apt-repository ppa:ondrej/php

Lies nun alles nochmals neu ein:
$ sudo apt update

Nun kannst Du mit der Installation von PHP 8.3 beginnen:
$ sudo apt -y install php8.3 libapache2-mod-php8.3

Für meinen Zweck (Nextcloud) werden noch weitere PHP-Pakete benötigt und wie folgt installiert:
$ sudo apt -y install php8.3-{apcu,bcmath,bz2,cli,curl,gd,imagick,intl,mbstring,mysql,opcache,xml,yaml,zip}

Prüfen wir nun mal die installierte PHP-Version:
$ php -v

So in etwa sollte dann die Konsole aussehen:
PHP 8.3.7 (cli) (built: May 13 2024 15:38:09) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies


Sollte hier immer noch die alte PHP-Version angezeigt werden, dann muss Du die neue PHP-Version für die Shell setzen:
$ sudo update-alternatives --set php /usr/bin/php8.3

Zum Schluss deaktivieren wir noch das 8.1er PHP Modul und aktivieren PHP 8.3, anschließend starten wir den Apache neu.
$ sudo a2dismod php8.1
$ sudo a2enmod php8.3
$ sudo systemctl restart apache2.service


Hinweis: ggf. musst du (wie ich) auch noch einige Einstellungen in der php.ini bearbeiten / aktualisieren
Normalerweise findest du die Dateien unter:
$ sudo vi /etc/php/8.3/apache/php.ini
$ sudo vi /etc/php/8.3/cli/php.ini

Starte zum Schluss nochmals den Apache neu:
$ sudo systemctl restart apache2.service

Viel Erfolg beim testen.