Im November 2021 gab es im PHP-Universum eine offizielle Veröffentlichung. Wie man der Überschrift auf dieser Seite unschwer entnehmen kann, wird hier wohl die Rede von PHP 8.1 sein. Und so ist es auch. Die Funktionsliste der Neuerscheinung ist recht lang und interessant, aber darum kümmern wir uns heute nicht. Viel mehr möchte ich dir erklären, wie man PHP 8.1 unter Ubuntu installiert.
In diesem Beitrag lernst du, wie man das PPA von Ondřej Surý einbindet, worauf es dabei ankommt und wie man PHP 8.1 in Verbindung mit einem Apache-Webserver korrekt einsetzt. Außerdem wird auch die von Igor Sysoev entwickelte, unter der BSD-Lizenz veröffentlichte Webserver-Software Nginx im Folgenden nicht zu kurz kommen. Aber lasst mich endlich loslegen.
1. Ubuntu auf den neusten Stand bringen
Wie es sich für einen guten Administrator gehört, muss das Betriebssystem zu Beginn der Arbeiten erst einmal in Ruhe aktualisiert werden. Sollte hierbei ein Kernel-Update heruntergeladen worden sein, dann muss der Server noch kurz einen Reboot durchführen.
# Root werden und sich das Sudo-Getippe sparen ;)
sudo -i
# Systemaktualisierung
sudo apt update && sudo apt upgrade -y
# Rebooten nur nach Kernel-Update
sudo systemctl reboot
2. Ondrej Surys Repository hinzufügen
Nun geht es auch schon mit den spannenderen Arbeiten los. Zu Beginn installieren wir etwas Software nach, damit wir direkt im Anschluss das PPA importieren können. Wichtig ist hierbei, dass direkt im Anschluss nochmal die Paketliste auf den neuesten Stand gebracht wird und ein Upgrade durchgeführt wird.
# Paket, um PPAs importieren zu können
sudo apt install software-properties-common
# Ondrej Surys PPA hinzfügen
sudo add-apt-repository ppa:ondrej/php
# Paketlisten updaten
sudo apt update
3. PHP 8.1 installieren
Wer hätte es gedacht, nun muss PHP in der neuen Version 8.1 installiert werden! Das Ganze lohnt sich aber auch. So ist nicht nur die Performance besser geworden, sondern auch wieder an der Sicherheit geschraubt worden. Viel interessanter sind aber die vielen neuen Features: Enums, Fibers, fsync und fdatasync, Final Class, Constants, never Return Type, Readonly Properties, array_is_list und vieles mehr.
# Apache-Installation
sudo apt install php8.1 -y
sudo systemctl restart apache2
# NGINX-Installation
sudo apt install php8.1 php8.1-fpm php8.1-cli -y
sudo systemctl restart nginx
4. PHP 8.1 Extensions installieren:
Mit der einen Installation ist es noch nicht ganz getan. PHP verfügt nämlich über zahlreiche Erweiterungen. Daher sollte man prüfen, welche Version man aktuell einsetzt und welche Extensions dort installiert sind. Im folgenden Codeschnipsel musst du daher bitte das <extension> durch Module wie beispielsweise mysql, zip oder xml ersetzen.
# Aktive PHP-Version anzeigen lassen
php --version
# Alle aktiven PHP-Module auflisten
php --modules
# Installierte PHP-Erweiterungen in Datei speichern
dpkg -l | grep php | sudo tee php.txt
# Gegebenenfalls benötigte Erweiterungen nachinstallieren
sudo apt install php8.1-<extension>
# Zum Abschluss noch Apache oder NGINX neustarten
sudo systemctl restart apache2 oder sudo systemctl restart nginx
5. PHP 8.1 korrekt konfigurieren:
Jede neue PHP-Version möchte noch korrekt eingerichtet werden. Im Idealfall wird dafür einfach die alte Konfiguration nachgebaut. Welche Befehle du bei diesem Schritt konkret brauchst, habe ich im Folgenden aufgelistet:
# Apache-Webserver
sudo vim /etc/php/8.1/apache2/php.ini
# NGINX-Webserver
sudo vim /etc/php/8.1/fpm/php.ini
# Wichtige Einstellungen mit Beispielwerten
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
# Apache-Webserver neustarten
sudo systemctl restart apache2
# NGINX-Webserver neustarten
sudo php-fpm8.1 -t
sudo systemctl restart php8.1-fpm && sudo systemctl restart nginx
6. PHP 8.1 als Standardversion aktivieren
In diesem Artikel haben wir alle nötigen Schritte durchgeführt, damit du mit PHP in der Version 8.1produktiv arbeiten kannst. Allerdings ist das neue Major-Update noch nicht als Standversion aktiviert. Sollte das bei dir eine Rolle spielen, dann führe am besten noch folgende Befehle aus:
#Apache-Webserver
sudo a2dismod php7.4
sudo a2enmod php8.1
sudo systemctl restart apache2
#NGINX-Webserver
sudo vim /etc/nginx/sites-available/your.conf
Ersetze fastcgi_pass unix:/run/php/php7.4-fpm.sock;
durch fastcgi_pass unix:/run/php/php8.1-fpm.sock;
sudo nginx -t
sudo systemctl restart nginx